我有一个数组$friends
,我用$friend_new = join(',',$friends );
得到name1,name2,name3
。但是当我使用这个查询时,我得到了错误:
$query = mysqli_query($connect_db, "SELECT * FROM post WHERE name IN ($friend_new )");
有人知道问题在哪里吗?
您应该使用implode("','", $friends)
和IN ('$friends_new')
,因为它们是字符串值。
你的代码容易被注入。您应该使用PDO/mysqli
你的列表必须看起来像:
... IN ('friend1','friend2','friend3')
如果你有一个好友数组,如:
$friends = array("friend1","friend2","friend3");
您可以使用implode
来准备与IN
一起使用:
$friend_new = "'" . implode("','", $friends) . "'";
最后,SELECT * FROM post WHERE name IN ($friend_new)
您这样做的方式是单个字符串不会被引用,这会导致错误。因为join允许你指定一个大于1个字符的"glue",你可以这样做:
$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') ";
,即写入中间的', '
,并将''
包围