【发布时间】:2021-03-31 12:36:58
【问题描述】:
我在 PDO 中尝试使用 LIKE 进行查询,但是在这部分代码中出现以下错误:致命错误:未捕获错误:无法通过引用 PDO 传递参数 2。我该如何解决?
function buscador($DB,$categoria_id,$buscado){
$productos = NULL;
$sql = "SELECT * from producto WHERE categoria_id = ? LIKE ?";
$stmt = $DB->prepare($sql);
//$params = [$categoria_id,':keywords', '%' . $buscado . '%'];
$stmt->bindParam(1,$categoria_id,PDO::PARAM_STR);
$stmt->bindParam(2,':keywords', '%' . $buscado . '%',PDO::PARAM_STR);
$stmt->execute();
$productos = $stmt->fetchAll();
return $productos;
}
【问题讨论】:
-
只是说,您缺少要在
WHERE categoria_id = ? LIKE ?中进行LIKE操作的列 -
这里你没有正确传递参数:
$stmt->bindParam(2,':keywords', '%' . $buscado . '%',PDO::PARAM_STR);(注意你有 4 个,不像第一个绑定中的 3 个)。此外,您的查询似乎不正确。哪一列应该使用LIKE? -
应该使用like的列是$ searched @El_Vanja
-
$sql = "SELECT * from producto WHERE categoria_id = ? AND SOMECOLUMN LIKE ?"; -
哦,是的,谢谢,如果我更改此功能会给我同样的错误@RiggsFolly
标签: php model-view-controller pdo sql-like