2013-03-18 47 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";