我有一个选择框,我通过ajax将值传递给mysql语句。 我需要让它更聪明,所以我不必硬编码选择框中的所有值
HTML选择框是:
<select>
<option value="value1">something</option>
<option value="value2">somethingElse</option>
</select>
我通过ajax传递值:
var opts = [];
$selectboxes.each(function(){
opts.push($(this).val());
})
在我的php文件中,我使用该值来过滤SQL select语句:
if (in_array("something", $opts)){
$where .= " AND region = 'something'";
}
如果用户选择值为value1
的选项1,则php文件应更改为
if (in_array("VALUE1", $opts)){
$where .= " AND region = 'VALUE1'";
}
答案 0 :(得分:1)
使用where和array_intersect的IN选项仅选择我们在$ isarray中找到的值
$isarray= array("something","somethingElse",....)
$is = array_intersect($ops,$isarray)
$where .= " AND region IN ".$is
注意:正确清理你的$ opts,这样你就没有sql注入
答案 1 :(得分:0)
如果您在某个变量中有多个值,那么您可能会将这些值存储在一个数组中,并使用array_intersect来获得所需的结果。
<?php
$opts = Array ('value1','value2','value3','value4'); //select box values which your are passing from ajax call
$somethingArray = Array('something', 'value1','value4'); //value that you need to match / compare
$result = array_intersect($opts, $somethingArray);
$where = '';
foreach ($result as $key => $value) {
$where .= " AND region = '".$value."'";
}
echo $where; //Output=> AND region = 'value1' AND region = 'value4'
?>