0

我有一个数组$friends,我曾经$friend_new = join(',',$friends );得到name1,name2,name3. 但是当我使用这个查询时,我得到了错误:

$query = mysqli_query($connect_db, "SELECT * FROM post WHERE name IN ($friend_new )");

有谁知道问题出在哪里?

4

3 回答 3

3

您的列表必须如下所示:

... IN ('friend1','friend2','friend3')

如果您有很多朋友,例如:

$friends = array("friend1","friend2","friend3");

您可以使用implode来准备使用IN

$friend_new = "'" . implode("','", $friends) . "'";

最后,

SELECT * FROM post WHERE name IN ($friend_new)
于 2013-04-26T22:44:54.547 回答
3

您应该使用implode("','", $friends)andIN ('$friends_new')因为这些是字符串值。


您的代码容易被注入。您应该使用正确的参数化查询与 PDO / mysqli

于 2013-04-26T22:45:35.267 回答
0

你这样做的方式不会引用单个字符串,这会导致错误。由于 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 写中间', ',并用''

于 2013-04-26T22:48:49.627 回答