Использовать массив внутри строки запроса - PullRequest
1 голос
/ 10 июня 2011

Я пытаюсь передать массив, который я уже нашел по запросу, в другой запрос. Например:

$first_query = "SELECT id FROM from Table WHERE user = '{$_SESSION['id'}'";
$result = mysql_query($first_query,$connection);
$ids = mysql_fetch_array($result);

Здесь мне становится сложно. Я хочу передать $ ids в следующий запрос.

$id_implode = implode(", ", $ids)
$second_query = "SELECT * FROM Table2 WHERE id = '{$id_implode}';

Второй запрос, похоже, не работает. Любая помощь с благодарностью!

Ответы [ 4 ]

5 голосов
/ 10 июня 2011

неверный синтаксис вашего второго запроса. После оценки следует прочитать

select * from Table2 where id in (1,2,3)

бросьте фигурные скобки и измените = на in. Не используйте ИЛИ - это глупый способ игнорировать хорошую функциональность sql

РЕДАКТИРОВАТЬ : Комментарий Тенеффа дает очень хорошее замечание - почему вы подходите к проблеме таким образом? Если между таблицами есть связь, они могут быть объединены, и все нужные вам данные могут быть получены одним запросом. Если по какой-то причине вы не можете / не хотите присоединиться к таблицам, вы можете хотя бы попробовать подзапрос

select * from table2 where id in (select id from table where user = $_SESSION['id']);
1 голос
/ 10 июня 2011

Я думаю, вы должны использовать IN

$id_implode = implode(", ", $ids)
$second_query = "SELECT * FROM Table2 WHERE id IN '({$id_implode})';

Предполагается, что $ ids состоит из int, в противном случае вы должны заключить каждую запись в кавычки. это значит

IN (6,7,8,9)//this doesn't need quotes

IN ('lemon', 'orange')//needs quotes
1 голос
/ 10 июня 2011

Чтобы использовать оператор where с несколькими записями для сопоставления, используйте in ().

$id_implode = "'".implode("', '", $ids)."'"
$second_query = "SELECT * FROM Table2 WHERE id in ({$id_implode});
1 голос
/ 10 июня 2011

попробуйте использовать синтаксис IN:

$id_implode = implode("', '", $ids);
$second_query = "SELECT * FROM Table2 WHERE id in ('{$id_implode}');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...