从选择框通过ajax到mysql获取值

时间:2016-05-24 11:35:05

标签: javascript php jquery mysql ajax

我有一个选择框,我通过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'";
}

2 个答案:

答案 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'
?>