Я хочу получить элементы массива и поместить его в MySQL-запрос с помощью PHP следующим образом:
$ArrayOne = {3, 5, 8, 2}; $sql = SELECT * from myTable WHERE id1='3' and id2='5' and id3='8' and id4='2';
Я делаю это так, но это провалилось:
for ($i=0; $i<count($ArrayOne); $i++) { $element.$i = $ArrayOne[$i]; } $sql = ("SELECT * from myTable WHERE id1=". $element.$i ." and id2=". $element.$i ." and id3=". $element.$i ." and id4=". $element.$i .");
Я думаю, что $element.$i
имеет такое же значение, но я не знаю, как получить различное значение элемента Array. И если я это сделаю, это тоже неправильно.
for ($i=0; $i<count($ArrayOne); $i++) { $element.$i = $ArrayOne[$i]; $sql = ("SELECT * from myTable WHERE id1=". $element.$i ." and id2=". $element.$i ." and id3=". $element.$i ." and id4=". $element.$i ."); }
Может ли любой орган дать решение?
В вашем коде есть несколько ошибок
Первое:
$ArrayOne = {3, 5, 8, 2};
Должно быть:
$ArrayOne = array(3, 5, 8, 2);
Вторая ошибка, ваша переменная $sql
не заключена между кавычками, должна быть $sql="your query";
если ваш массив имеет длину исправления, вам не нужно использовать цикл:
$ArrayOne = array(3, 5, 8, 2); $sql = "SELECT * from myTable WHERE id1='$ArrayOne[0]' and id2='$ArrayOne[1]' and id3='$ArrayOne[2]' and id4='$ArrayOne[3]'";
Для массива переменной длины вы можете использовать ответ @ Nightmare
Как примечание стороны:
Читайте о внедрении SQL
Вы должны изучить PDO, если вы начинаете изучать php, делайте это правильно
Руководство
Попробуй это:
$count = count($ArrayOne); for($i=0; $i<$count; $i++){ $where_arr[$i] = 'id'.$i.'='.$ArrayOne[$i]; } $sql = "select * from myTable where ".implode(" and ",$where_arr);