这个问题在这里已经有答案了:
我可以将数组绑定到in()条件吗(21个答案)
两年前关门了。
因此,我正在建立一个工作网站,用户选择几个位置,它应该返回相应的工作。这意味着我将从用户那里获得一个位置数组。如何使用pdo绑定此数组。目前我只是直接将值添加到sql中,但是我知道这是一个安全问题。我如何重写它以便它使用如下语法:
$stmt->bindValue(":locations", $locations);
就我所知:
$location = $_POST['location'];
$locs = "'" . implode("', '", $location) . "'";
//create query
$sql =
"SELECT *
FROM job
JOIN location ON job.location_id = location.id
WHERE location.region IN ($locs)
";
//get results
try
{
$stmt = $DB->prepare($sql);
$stmt->execute();
$results = $stmt->fetchAll();
}
catch (Exception $ex)
{
echo $ex->getMessage();
}
//print results
foreach($results as $res)
{
echo "<p>Title:" . $res['title'];
echo "<p>Views:" . $res['views'];
echo "<p>Created At:" . $res['created_at'];
echo "<p>Image:" . $res['img_url'];
echo "<p>Salary:" . $res['salary'];
echo "<p>Region:" . $res['region'];
echo "<p>State:" . $res['state'];
echo "<br/><br/>";
}
1条答案
按热度按时间huwehgph1#
无法将数组绑定到
IN
条款。但是,可以像这样绑定多个标量值:你需要按程序建立
IN ($placeholders)
查询的一部分,用于处理动态数量的参数。