Php 致命错误:未捕获错误:无法通过引用PDO传递参数2
我尝试在PDO中使用LIKE进行查询,但是我得到以下错误:致命错误:未捕获错误:在代码的这一部分中,无法通过引用PDO传递参数2。我该怎么解决呢Php 致命错误:未捕获错误:无法通过引用PDO传递参数2,php,model-view-controller,pdo,sql-like,Php,Model View Controller,Pdo,Sql Like,我尝试在PDO中使用LIKE进行查询,但是我得到以下错误:致命错误:未捕获错误:在代码的这一部分中,无法通过引用PDO传递参数2。我该怎么解决呢 function buscador($DB,$categoria_id,$buscado){ $productos = NULL; $sql = "SELECT * from producto WHERE categoria_id = ? LIKE ?"; $stmt = $DB->prepare($s
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;
}
bindParam
的第二个参数是通过引用传递的,因此不能是文本,必须是变量
您在查询语法中也有一个错误,我已经修复了这个错误,虽然我不知道要使用的列名,但请在尝试使用此代码之前更改它
function buscador($DB,$categoria_id,$buscado){
$productos = NULL;
$sql = "SELECT * from producto WHERE categoria_id = ? AND othercol LIKE ?";
$stmt = $DB->prepare($sql);
$p2 = '%' . $buscado . '%';
$stmt->bindParam(1,$categoria_id,PDO::PARAM_STR);
$stmt->bindParam(2,$p2,PDO::PARAM_STR);
$stmt->execute();
$productos = $stmt->fetchAll();
return $productos;
}
也就是说,在
WHERE categoria_id=?比如?
这里您没有正确地传递参数:$stmt->bindParam(2,':关键字','%.$buscado'%',PDO::PARAM_STR)代码>(请注意,与第一个绑定中的3个不同,您有4个)。另外,您的查询似乎不正确。哪个列应该使用LIKE
?应该使用LIKE的列是$searched@El_Vanja$sql=“SELECT*from producto WHERE categoria_id=”和类似的列?”代码>哦,是的,谢谢如果我更改此函数,请给我相同的错误@RiggsFolly