PHP中的MySQL查询,条件为

时间:2018-06-06 08:02:28

标签: php mysql mysqli

我正在PHP文件中进行MySQL查询。我有一个包含多个国家/地区名称的数组($ country),我想从我的表中选择这些国家/地区的行。

$ country是以下数组:

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]."'");

但它不起作用,我尝试:$ result的mysqli_num_rows()表示参数是booelan(这是因为查询失败并返回false)。有谁知道错误是什么?

这是table1结构:

enter image description here

3 个答案:

答案 0 :(得分:2)

使用可以像这样使用 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。不要在答案中使用数组,因为你可能会得到空的结果。

答案 1 :(得分:0)

使用 IN

请注意您的国家/地区数据,例如$country = ['india', 'canada'];

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

答案 2 :(得分:0)

您无法将数组传递给查询。您可以使用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);

请注意,构建$ countries我已在每个元素周围添加单引号。原因是我将字符串传递给数据库。在整数

的情况下,这不是必需的