MySQL запрос в PHP с массивом в условии - PullRequest
0 голосов
/ 06 июня 2018

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

$ страна - это следующий массив:

Array
(
    [0] => Afghanistan
    [1] => Armenia
    [2] => Bhutan
)

Я использую следующий код:

$result = mysqli_query($con,"SELECT * 
                             FROM table1 
                             WHERE table1.country='".$country."'");

Однако следующее утверждение работает только для одной страны:

 $result = mysqli_query($con,"SELECT * FROM table1 WHERE table1.country='".$country[1]."'");

Но это не работает, когда я пытаюсь: mysqli_num_rows () из $ result говорит, что параметр является логическим (это потому, что запрос не выполняется и он возвращает false).Кто-нибудь знает в чем ошибка?

Это структура таблицы1:

enter image description here

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

использовать можно использовать IN примерно так:

// Array should look like this.
// $country = array('spain', 'UK', 'Germany');

$result = mysqli_query($con, "SELECT * FROM table1 WHERE table1.country IN ('". implode("' , '", $country) . "')");

PS.Не используйте массив в ответе, так как вы можете получить пустой результат.

0 голосов
/ 06 июня 2018

Вы не можете передать массив в запрос.Вы можете использовать IN для передачи в запрос различных значений, разделенных запятыми.Итак, сначала вы должны взять каждую запись массива и объединить ее запятыми:

//initialize the list
$countries = "";
foreach($country as $a){
    //add each country wrapping it in single quotes
    $countries .= "'".$a."',";
}
//remove the last comma that is not necessary
rtrim($countries,",");
//build the query
$sql = "SELECT * FROM table1 WHERE table1.country IN ($countries)";
//run the query
$result = mysqli_query($con,$sql);

Обратите внимание, что при построении $ стран я поместил одинарные кавычки вокруг каждого элемента.Причина в том, что я передаю строки в базу данных.Это не будет необходимо в случае целых чисел

0 голосов
/ 06 июня 2018

используйте IN

Обратите внимание, что данные вашей страны, такие как $country = ['india', 'canada'];

$result = mysqli_query($con,"SELECT * FROM table1 WHERE table1.country IN('".$country."')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...