2013-03-18 3 views
0

Im пытается заполнить запрос массивом. Как я знаю, что могу отобразить массив с функцией foreach();, но им не в состоянии поставить его в MySQL Query Im пытается сделать что-то вроде этого:PHP/Insert 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"; 
?> 

Script должны показать это, как:
$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). –

+1

user = 1 и user = 2? вы имеете в виду __OR__ – Waygood

+0

Может ли 'user' быть равным как« 1 », так и« arr_1 »? Возможно, вам просто нужно использовать 'IN' здесь, например' SELECT * FROM users WHERE user IN (1, 'arr_1', ...) '? – raina77ow

ответ

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

+0

@insertusernamehere: did not заметили это, и я изменил соответственно – Nauphal

+0

Это немного похоже на школу: «Найдите все ошибки в этом коде. Решите его с помощью ручки и бумаги». :) – insertusernamehere

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"; 
Смежные вопросы