Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 致命错误:未捕获错误:无法通过引用PDO传递参数2_Php_Model View Controller_Pdo_Sql Like - Fatal编程技术网

Php 致命错误:未捕获错误:无法通过引用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

我尝试在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
的第二个参数是通过引用传递的,因此不能是文本,必须是变量

您在查询语法中也有一个错误,我已经修复了这个错误,虽然我不知道要使用的列名,但请在尝试使用此代码之前更改它

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