Массив в SQL-запросе?

У меня проблема с SQL Query с массивом в моем предложении WHERE.

Например:

Мой массив:

$myarray[1] = "hi"; $myarray[2] = "there"; $myarray[3] = "everybody"; 

Мое заявление MySQL:

 SELECT * FROM myTable WHERE title='".$myarray[]."' 

Есть ли способ понять это? Я решил это так:

 for(...) { $where = $where." title='".$myarray[$count]."' OR "; } $where = substr($where , 0, -3); ..... SELECT * FROM myTable WHERE ".$where." 

Но если бы у меня было тысячи записей в моем массиве, SQL-запрос был бы слишком большим и медленным, не так ли?

благодаря

Вы можете использовать IN-функцию mysql

EDIT: Как сказал амошревира, вам нужно избегать строк в массиве.

 $myarray[1] = "'hi'"; $myarray[2] = "'there'"; $myarray[3] = "'everybody'"; $newarray = implode(", ", $myarray); //makes format 'hi', 'there', 'everybody' SELECT * FROM myTable WHERE title IN ($newarray); 
 $myarray[1] = "hi"; $myarray[2] = "there"; $myarray[3] = "everybody"; //every quoted string should be escaped according to SQL rules foreach($myarray as $key => $val) { $myarray[$key] = mysql_real_escape_string($val); } $in_str = "'".implode("', '", $myarray)."'"; //makes format 'hi', 'there', 'everybody' SELECT * FROM myTable WHERE title IN ($in_str); 

Вы можете использовать оператор IN . Вы хотите, чтобы это выглядело так:

 title IN ('hi', 'there', 'everybody') 

Таким образом, вы бы сделали что-то вроде:

 $sql = "SELECT * FROM myTable WHERE title IN '" . implode("','", $myarray) . "';" 

Обратите внимание, что вам необходимо сначала отфильтровать ваш массив для SQL-инъекций.

Вы можете попробовать использовать IN в своем предложении WHERE,

 SELECT * FROM myTable WHERE title IN ('hi','there','everybody'); 

или

 SELECT * FROM myTable WHERE title IN ('.implode(',',$myarray).');