Intereting Posts
twitter oauth: получение неопределенного индекса: oauth_token_secret в Преобразование стандарта H: i в стандарт ISO 8601 как сохранить значение выпадающего окна в php Сложный запрос + скрипт разбивки на страницы нет рабочего отключения текстового поля, когда записи больше одного Двойные кавычки не копируются нормально. Как я могу их редактировать? Передача изображения с использованием Ajax в PHP Медленный ответ на запись базы данных с php Что такое плотность ключевых слов и как создать скрипт в PHP? Сравнение ближайших строк PHP Устранение неполадок «Нет такого файла или каталога» при запуске «php app / console doctrine: schema: create` повышение скорости проверки наличия файлов Форма Symfony2 всегда пуста после отправки Как выполнить запрос на соединение с помощью конструктора запросов Symfony и Doctrine Query Builder выполнить две команды оболочки в одном выражении exec php

Выберите строки из таблицы MySQL, где value – массив?

У меня есть таблица со списком идентификаторов. Я использую запрос для его выбора, а затем извлекаю его как массив (я знаю, как это сделать). Затем я хочу выбрать строки из другой таблицы, где идентификаторы находятся в массиве, полученном ранее.

Как мне это сделать? Заранее спасибо.

Вы, скорее всего, захотите выполнить запрос типа WHERE field IN (...) . Это по сути эквивалент WHERE field=X or field=Y or field=Z or ... для каждого значения, указанного в предложении IN .

Учитывая, что у вас уже есть массив идентификаторов, самый простой способ – построить запрос следующим образом:

 $where_in = implode(',', $ids_array); $query = "SELECT ... FROM yourtable WHERE idfield IN ($where_in);"; 

Применяются обычные условия – будьте осторожны с отверстиями для инъекций SQL, всегда проверяйте результаты запроса на отказ и т. Д.

вы можете сделать это в одном запросе

что-то вроде этого SELECT table2.id FROM table2 WHERE table2.id IN (SELECT table1.id FROM table1 WHERE blablabla)

 select value1,value2 from table2 where id in (1,2,3,4,5) 

Вы могли бы избежать этого и рассмотреть таблицы JOIN . Один запрос будет получать согласованные записи по идентификаторам.

для примера

 SELECT * FROM table1 t1 JOIN table2 t2 ON t1.ID=t2.ID 

Предположим, что $values – это массив, вы можете использовать ключевое слово mysql IN и функцию php-implode для построения запроса

 $sql = "SELECT a, b FROM table WHERE id IN (" . implode(", ",$values) . ")"; 

implode будет присоединяться к элементам массива, используя ","