我有一个数组$friends
,我曾经$friend_new = join(',',$friends );
得到name1,name2,name3
. 但是当我使用这个查询时,我得到了错误:
$query = mysqli_query($connect_db, "SELECT * FROM post WHERE name IN ($friend_new )");
有谁知道问题出在哪里?
您的列表必须如下所示:
... IN ('friend1','friend2','friend3')
如果您有很多朋友,例如:
$friends = array("friend1","friend2","friend3");
您可以使用implode
来准备使用IN
:
$friend_new = "'" . implode("','", $friends) . "'";
最后,
SELECT * FROM post WHERE name IN ($friend_new)
您应该使用implode("','", $friends)
andIN ('$friends_new')
因为这些是字符串值。
您的代码容易被注入。您应该使用正确的参数化查询与 PDO / mysqli
你这样做的方式不会引用单个字符串,这会导致错误。由于 join 允许您指定长于 1 个字符的“胶水”,您可以执行以下操作:
$query = mysqli_query($connect_db,
"SELECT * FROM post " .
"WHERE name IN ('".join("', '", $friends)."') ";
或者
$friend_new = join("', '", $friends);
$query = mysqli_query($connect_db,
"SELECT * FROM post " .
"WHERE name IN ('$friend_new') ";
也就是说,让 join 写中间', '
,并用''