我正在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;
}
bindParam
的第二个参数是通过引用传递的,因此不能是文字,必须是变量。
我修复了Query语法中的一个错误,尽管我不知道要使用的列名,但在尝试使用此代码之前,请更改它。
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;
}