MySQL IN用于字符串


MySQL IN for strings

我有一个数组$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') ";

,即写入中间的', ',并将''包围