【发布时间】:2017-08-26 05:45:06
【问题描述】:
我目前面临一个困难,将逗号分隔的值放入 MySQL NOT IN 并没有给我希望的结果。一定有我遗漏的东西,因为我不确定要搜索这个特定问题的内容。仅运行 MySQL 代码有效,但从另一个 PHP 函数传递参数则无效。
这是给我带来问题的代码:
$uid = 1;
$selected_uids = '1,2';
$result = $db->retrieveFollowingWithCondition($uid, $selected_uids);
...然后在代码中的某个地方...
public function retrieveFollowingWithCondition($uid, $selected_uids) {
$stmt = $this->conn->prepare("SELECT *
FROM `friendlist`
WHERE `uid` = ? AND `buddy_uid` NOT IN (?)
GROUP BY `buddy_uid`;");
$stmt->bind_param("is", $uid, $selected_uids);
...}
我已经测试了将“2”放入$selected_uids 并且它确实有效。但是一旦涉及逗号,代码就会运行,但 $selected_uids 仍然在结果中。不确定这是一种不好的做法,或者只是需要对代码进行细微调整。无论如何,我真的很期待了解为什么它不适合我。
【问题讨论】:
-
将 $selected_uids 放入数组中
-
你试过
$selected_uids = ['1','2'];吗? -
@NanaPartykar 是的,很遗憾这也不起作用。
-
如果对您有帮助,请查看此帖子 - bind param with array
-
if(in_array($uid, $selected_uids)){ $stmt = $this->conn->prepare("SELECT * FROM
friendlistWHEREuid= ? ANDbuddy_uidNOT在 (?) 分组buddy_uid;"); $stmt->bind_param("是", $uid, $selected_uids); ...} }