PHP/Insert foreach在查询中

PHP/Insert foreach在查询中,php,mysql,arrays,foreach,Php,Mysql,Arrays,Foreach,我试图用数组填充查询。据我所知,我可以用函数foreach()显示数组但是我不能把它放到mysql查询中 我正在尝试这样做: <?php $arr = array("arr_1", "arr_2", "arr_3", "arr_4"); $query = mysql_query("SELECT * FROM users WHERE user = '1'". foreach($arr as $arr) { echo "AND user = '".$arr++."'"; } ." O

我试图用数组填充查询。据我所知,我可以用函数
foreach()显示数组但是我不能把它放到mysql查询中
我正在尝试这样做:

<?php
$arr = array("arr_1", "arr_2", "arr_3", "arr_4");

$query = mysql_query("SELECT * FROM users WHERE user = '1'".
foreach($arr as $arr) {
    echo "AND user = '".$arr++."'";
}
." ORDER BY id";
?>

如果要从数组中添加多个条件,请执行串联而不是回显

<?php
$arr = array("arr_1", "arr_2", "arr_3", "arr_4");

$query = mysql_query("SELECT * FROM users WHERE user = '1'";
foreach($arr as $id) {
    $query .= "AND user = '".$id."'";
}
$query .= " ORDER BY id";
?>

不是最佳解决方案,而是一种替代方案:

$arr = array("arr_1", "arr_2", "arr_3", "arr_4");

$arr_string="'".implode("','", $arr)."'"; // surround values in quotes

$query = mysql_query("SELECT * FROM users WHERE user IN (".$arr_string.") ORDER BY id";

. 它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,.user=1和user=2?你是说ORCan
user
可以同时等于'1'和'arr_1'吗?也许你只需要在这里使用
,比如
SELECT*FROM user WHERE user IN(1,'arr_1',…)
?如果$arr='arr_1',,那么$arr++是什么;不能在mysql中使用foreach-但是你可以在('arr_1'、'arr_2'、'arr_3')中使用
用户
顺便说一句,这样做了,或者你仍然需要用
替换
我想说的是,你必须在每次迭代之前或之后添加另一个空格。@InsertUserName here:我没有注意到这一点,我也相应地做了更改。这有点像回到学校时:“找出这段代码中的所有错误。用笔和纸解决它。”:)但是这个查询可能不会返回任何内容,因为使用了
,这肯定会失败,因为没有任何列等于所有的值。我只是插入或替换了AND,并对其进行了一点更改,其工作状态非常好:)谢谢:)