我正在根据数组值编写SQL Query但是得到了错误的结果。
例如,如果我的数组值为 [' PAK',' USA'] ,则查询应为: -
Select * From `search` WHERE country = 'PAK' AND country = 'USA'
如果数组值 [' USA','中国'] 则查询应为: -
Select * From `search` WHERE country = 'USA' AND country = 'China'
依旧......
我这样做但是我得到了错误的结果: -
SELECT * FROM `search` WHERE country = '' AND country = 'Pakistan' AND country = 'United States'
我想知道为什么 country ='' 总是在Query的开头添加..这就是我得到错误结果的原因。请帮帮我。在此先感谢..下面是我的代码..
PHP
$query_parts = array();
foreach($_POST['countryArray'] as $array){
$query_parts[] = "'".$array."'";
}
$string = implode(' AND country = ', $query_parts);
//echo $string;
$query = "SELECT * FROM `search` WHERE country = {$string}";
echo $query;
答案 0 :(得分:0)
代码很好。
但是,数组中的空白元素不受限制。
数组$_POST['countryArray']
有一个空白元素。
您可以使用array_filter()过滤它:
$_POST['countryArray'] = array_filter($_POST['countryArray']);
最终守则:
$query_parts = array();
$_POST['countryArray'] = array_filter($_POST['countryArray']);
foreach($_POST['countryArray'] as $array){
$query_parts[] = "'".$array."'";
}
$string = implode(' AND country = ', $query_parts);
//echo $string;
$query = "SELECT * FROM `search` WHERE country = {$string}";
echo $query;