Intereting Posts

Оператор Mysql SELECT с массивом php

Я создал массив в php, содержащий несколько USER_ID. Я использую базу данных mysql, имеющую таблицу с именем USERS. Теперь я хочу выбрать только те строки из USERS, user_id которых сопоставляется с USER_ID в массиве.

заранее спасибо

$ids = join(',',$user_ids); $sql = "SELECT * FROM USERS WHERE user_id IN ($ids)"; 

Передача массива в запрос с использованием предложения WHERE
http://www.php.net/manual/en/function.join.php
http://www.php.net/manual/en/function.implode.php

implode() массив в предложение IN в вашем SQL:

 $sql = "SELECT * FROM tbl WHERE USER_ID IN (" . implode(",", $user_ids) . ");"; 

Это предполагает, что ваши идентификаторы пользователя являются целыми числами, а не строками, которые должны быть указаны и экранированы. В таком случае,

 $sqlids = array(); foreach ($user_ids as $id) { // Escape and quote each id $sqlids[] = "'" . mysql_real_escape_string($id) . "'"; } $sql = "SELECT * FROM tbl WHERE USER_ID IN (" . implode(",", $sqlids) . ");"; 

Примеры IN , возможно, более чистые, но это другой подход. Я применил форматирование для удобства чтения. Обратите внимание: будьте уверены и используйте mysql_real_escape_string() при создании массива $users если имена пользователей отправляются пользователем или иным образом потенциально небезопасны.

 <?php $users = array('jim','mary','bob'); $userids = "USER_ID = '".implode("' \n OR USER_ID = '",$users)."'"; echo " SELECT * FROM USERS WHERE $userids "; ?> 

ВЫХОДЫ

 SELECT * FROM USERS WHERE USER_ID = 'jim' OR USER_ID = 'mary' OR USER_ID = 'bob' 

http://codepad.org/YfkPBEaJ