我有一个复选框过滤器,可以在其中“选中”多个选项。一旦它们被检查,它们就会被存储在一个 JavaScript 数组中并通过 ajax 传递给 php 文件。从那里,我尝试执行 foreach 循环来获取数组中的每个元素,并为每个元素的 SQL 语句添加一个新的 where 条件,然后运行查询。
JavaScript
var vendors = [];
function filterResults($this)
{
var vendor = $($this).attr('data-id');
if($($this).prop('checked'))
{
var action = 'add';
vendors.push(vendor);
}
else
{
var action = 'remove';
var index = vendors.indexOf(vendor);
if(index >= 0)
{
vendors.splice(index, 1);
}
}
运行的 PHP 脚本 (filter-results.php)
if(is_array($_POST['vendors']))
{
$collaterals = $vendor->updateResults($_POST['vendors']);
var_dump($collaterals);
foreach($collaterals as $col)
{
include '../parts/item.php';
}
}
包含 foreach 循环的 PHP 函数
public function updateResults($vendors)
{
try
{
$items = array();
$sql = "SELECT * FROM collaterals WHERE ";
foreach ($vendors as $ven)
{
echo $ven;
$sql .= "vendor = ".$ven." OR ";
}
$stmt = $this->db->prepare($sql);
$stmt->execute();
while($row = $stmt->fetchObject())
{
$items[] = $row;
}
return $items;
}
catch(Exception $e)
{
$e->getMessage();
}
}
PHP 函数中的“echo”正在运行,但 var_dump() 正在变成“NULL”,这意味着 SQL 语句中某处存在错误。
任何帮助将不胜感激。谢谢!
您可以不foreach
循环地运行查询,如下所示
$sql = "SELECT * FROM collaterals WHERE vendor IN ('".implode("','",$vendors)."')";
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句