为了账号安全,请及时绑定邮箱和手机立即绑定

在 mysql 的 where 子句中使用未知长度的数组

在 mysql 的 where 子句中使用未知长度的数组

PHP
红颜莎娜 2022-08-19 09:50:56
我正在编写一个SQL查询。我有一个未知长度的数组,我想通过在查询的 WHERE 子句中使用该数组从 MySQL 中选择数据。这是我现在的查询,它工作正常$sql = "SELECT DISTINCT messagesutou.SenderID from messagesutou where (messagesutou.SenderID !='$items[1]' AND messagesutou.SenderID !='$items[0]' AND messagesutou.SenderID !='$items[2]') AND messagesutou.RecieverID='$uid'";但是在这里,我知道数组(3)的长度,我只是使用带有索引的数组名称进行测试。现在我想知道数组长度是否未知,那么我该如何编写此查询?
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

$list = implode(',', $items);


SELECT DISTINCT SenderID 

FROM messagesutou 

WHERE 0 = FIND_IN_SET(SenderID, '$list')

  AND RecieverID='$uid'

或(摘自詹斯的回答,被他删除了)


SELECT DISTINCT SenderID 

FROM messagesutou 

WHERE SenderID NOT IN ($list)

  AND RecieverID='$uid'

区别 - 两个变体在和值具有数值类型时都适用,仅当具有字符串类型时才适用前者,当它们具有字符串类型并包含逗号或刻度时,则没有。SenderID$items


但后者可以适应:


$list = '\''.implode('\',\'', $items).'\'';


SELECT DISTINCT SenderID 

FROM messagesutou 

WHERE SenderID NOT IN ($list)

  AND RecieverID='$uid'

它现在接受任何数据类型并允许逗号(但不是刻度 - 它们必须在内爆之前引用)。


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信