2013-03-18 45 views
0

我试图用数组填充查询。当我知道我可以用功能foreach();显示数组,但林不能够把它在MySQL查询 我试着做这样的事情:PHP /插入查询中的foreach

<?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"; 
?> 

脚本必须为显示此:
$query = mysql_query("SELECT * FROM users WHERE user = '1' AND user = 'arr_1' AND user = 'arr_2' AND user = 'arr_3' AND user = 'arr_4'");

但这不工作,因为你不能把foreach()mysql_query();
所以我需要的是做同样的事情的脚本(查询字符串中的显示数组)

谢谢。

如果你想从阵列添加多个条件
+4

[**请不要使用新代码中的'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – 2013-03-18 17:32:14

+1

user = 1和user = 2?你的意思是__OR__ – Waygood 2013-03-18 17:32:40

+0

'用户'可以等于'1'和'arr_1'吗?也许你只需要在这里使用'IN',就像'SELECT * FROM users where用户IN(1,'arr_1',...)'? – raina77ow 2013-03-18 17:33:02

回答

2

,办置而不是回声

<?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"; 
?> 
+0

你仍然需要用';'来代替'.',假设你必须在每次迭代之前或之后添加另一个空格。 – insertusernamehere 2013-03-18 17:35:50

+0

@insertusernamehere:没有注意到,我改变了相应的 – Nauphal 2013-03-18 17:37:13

+0

这在学校里有点像:“找出这段代码中的所有错误,用笔和纸来解决。” :) – insertusernamehere 2013-03-18 17:39:43

0

不是最好的解决办法,但更好的方法:

$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";