我从通过JS“检查”的复选框创建一个数组。
简单复选框:
<div class="checkbox">
<label>
<input type="checkbox" name="checkSearch[]" value="One" checked /> One
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="checkSearch[]" value="Two" checked /> Two
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="checkSearch[]" value="Three" checked /> Three
</label>
</div>
JS:
var selectedItems = [];
$('input[type="checkbox"]:checked').each(function () {
selectedItems .push($(this).val());
});
//passing array in a function
searchLocations(pass1, pass2, selectedItems);
此时输出的是(假设所有三个复选框均已“选中”):
[“一个”,“两个”,“三个”];
这里我不太确定下一步需要做什么?
我可以将数组包含为URL字符串,稍后在我的SQL语句中使用PHP .implode函数吗?
这是我尝试过的:
function searchLocations(pass1, pass2, selectedItems) {
var searchUrl = 'searchLocations.php?pass1=' + pass1 + '&pass2=' + pass2 + '&selectedItems=' + selectedItems;
...
}
searchLocations.php
$pass1 = $_GET['pass1'];
$pass2 = $_GET['pass2'];
$selectedItems = $_GET['selectedItems'];
$selectedItems = " '".implode("', '", $selectedItems)."' ";
$query = sprintf("SELECT * FROM dbtable WHERE pass1 = $pass1 AND pass2 = $pass2 AND selectedItems IN ($selectedItems)");
$ selectedItems需要在SQL查询中如下所示:IN('One','Two','Three')..
答案 0 :(得分:1)
定义一个内爆并允许你包装元素的函数:
function implode_wrapped($before, $after, $glue, $array)
{
$out = '';
foreach ( $array as $item ){
$out .= $before.$item.$after.$glue;
}
return substr($out, 0, -strlen($glue));
}
然后你可以做像......这样的事情。
内嵌数组值并附加到查询字符串:
implode_wrapped('selectedItems[]=', '', '&', $items);
请注意,我正在使用'selectedItems []'。您的代码 - 函数searchLocations() - 以其当前形式不将selectedItems作为数组发送。
内嵌并与SQL一起使用:
implode_wrapped("'", "'", ',', $items);
请注意,您需要清理发送到SQL的任何值,否则将被黑客攻击。