mysql PDO,其中like或query只返回1个结果

mysql PDO,其中like或query只返回1个结果,mysql,pdo,sql-like,Mysql,Pdo,Sql Like,当我通过phpMyAdmin手动运行以下SQL时,返回的行数超过1行: SELECT * FROM bread WHERE (type LIKE '%hite%' OR type LIKE '%grain%' OR type LIKE '%brown%' ) AND bread_hide = 0 LIMIT 20; 然而,当我在PDO中运行它时,它只返回一个结果。SQL是为每个搜索词动态生成的,如下所示: SELECT * FROM bread WHERE ( type LIKE :q

当我通过phpMyAdmin手动运行以下SQL时,返回的行数超过1行:

SELECT * 
FROM bread
WHERE (type LIKE '%hite%' OR type LIKE '%grain%' OR type LIKE '%brown%' ) 
AND bread_hide = 0 
LIMIT 20;
然而,当我在PDO中运行它时,它只返回一个结果。SQL是为每个搜索词动态生成的,如下所示:

 SELECT * FROM bread WHERE ( type LIKE :q0 OR type LIKE :q1 OR type LIKE :q2 ) AND bread_hide = 0 LIMIT 20; 
因此,如果用户输入“hite grain brown”,则绑定以下参数:

:q0 = %hite%
:q1 = %grain%
:q2 = %brown%
手动运行时,我会得到以下结果:

white bread
wholegrain
brown bread
当运行我的PHP PDO查询时,我只得到最后一个:

brown bread
如果用户输入“白面包”,我将得到
全麦
,而不是
白面包

我希望有人知道原因/解决方法是什么,谢谢

php代码: 下面是如何绑定参数、执行查询和检索数据:

$statement_handle = $db_handle->prepare($breadSQL);
foreach($searchWord as $i=>$q) {
    $q = "%".$q."%";
    $statement_handle->bindParam(":q$i", $q);
}
$statement_handle->execute(); 
$statement_handle->setFetchMode(PDO::FETCH_ASSOC);
while($row = $statement_handle->fetch())
{
    $breadList[] = array('breadName' => $row['bread_name']);
}
固定代码:

foreach($searchWord as $i=>$q) {
    $q = "%".$q."%";
    $statement_handle->bindValue(":q$i", $q, PDO::PARAM_STR);
}

尝试使用带引号的参数

:q0 = '%hite%'
:q1 = '%grain%'
:q2 = '%brown%'

缺少
,或者是复制/粘贴错误?抱歉,复制和粘贴错误。凌晨3点我在哪里:)我会再检查一遍。我想你需要把剩下的代码贴出来。如果您总是返回最后一条记录,听起来可能是其他错误。请使用
bindValue
而不是
bindParam
bindParam
引用值,而不是值本身,并在需要构建整个查询时读取其值。构建此查询的方式意味着它将捕获对同一
$q
变量的多个引用,读取它们的值当然会产生相同的值。可能的重复