2013-10-08 2 views
1

У меня есть сеанс, содержащий массив, и этот массив заполнен идентификаторами. Каков наилучший способ выбрать все строки из таблицы MySQL, соответствующие этим идентификаторам?Выберите несколько строк из таблицы MySQL

Так что мне нужно что-то вроде:

SELECT * FROM table WHERE id = $_SESSION['ids'] 

Очевидно, что это не работает, так как $ _SESSION [ 'иды'] является массивом.

+0

Вы должны использовать 'IN()' MySQL синтаксис и цикл через ваши идентификаторы в дубликат 'IN()' – MonkeyZeus

+0

: http://stackoverflow.com/questions/9476146/mysql-php-select-where-id-array – cptnk

+0

для использования IN с массивом, вам сначала нужно для разрыва строки. для find_in_set не нужно было – AdrianBR

ответ

2

Вы можете просто использовать IN оператор SQL. В этом случае ваш запрос будет выглядеть

$sql = 'SELECT * FROM table WHERE id IN ("' . implode('","', $_SESSION['ids'] . '")'; 

Этот код будет Продусе запрос как следующий:

SELECT * FROM table WHERE id IN ("1", "2", "foo"); 

Надеется, что это помогает

+0

как это сделать с PDO просто как это ??? – mandza

1

HI Попробуйте это,

$var = $_SESSION['ids']; 

and then fire your query as 

$sql = SELECT * FROM table WHERE id = '$var'; 
3
 SELECT * 
    FROM 
     table 
    WHERE 
     find_in_set(id, $_SESSION['ids'])>0 
+0

Я попробовал следующее, чтобы протестировать ваш метод: '$ _SESSION ['ids'] = array (1,2,3); $ db-> query ('SELECT * FROM table WHERE find_in_set (id, $ _SESSION [' ids '])> 0'); 'Он создает ошибку, которую я не могу исправить: Неизвестный столбец 'Array' в 'where where ' – joepd

+0

print $ _SESSION [' ids ']; find in set нуждается в нем в виде строки с кавычками, например, «1,2,3,4,5». Убедитесь, что вы эхом отдаете в нужном формате. – AdrianBR

Смежные вопросы