php – PDO:参数号无效:混合命名和位置参数
发布时间:2020-12-13 16:38:07 所属栏目:PHP教程 来源:网络整理
导读:我遇到过这个我以前没看过的警告: Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in… 参考以下PDO查询(简化了易于阅读的功能): $offset = 0;$limit = 12
|
我遇到过这个我以前没看过的警告:
参考以下PDO查询(简化了易于阅读的功能): $offset = 0;
$limit = 12;
function retrieve_search_posts($searchfield,$offset,$limit){
$where = array();
$words = preg_split('/[s]+/',$searchfield);
array_unshift($words,'');
unset($words[0]);
$where_string = implode(" OR ",array_fill(0,count($words),"`post_title` LIKE ?"));
$query = "
SELECT p.post_id,post_year,post_desc,post_title,post_date,img_file_name,p.cat_id
FROM mjbox_posts p
JOIN mjbox_images i
ON i.post_id = p.post_id
AND i.cat_id = p.cat_id
AND i.img_is_thumb = 1
AND post_active = 1
WHERE $where_string
ORDER BY post_date
LIMIT :offset,:limit
DESC";
$stmt = $dbh->prepare($query);
foreach($words AS $index => $word){
$stmt->bindValue($index,"%".$word."%",PDO::PARAM_STR);
}
$stmt->bindParam(':offset',PDO::PARAM_INT);
$stmt->bindParam(':limit',$limit,PDO::PARAM_INT);
$stmt->execute();
$searcharray = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $searcharray;
}
函数和PDO查询工作正常,没有查询中包含的偏移量和限制变量.那么可能导致这个警告呢? 谢谢
更改
LIMIT :offset,:limit 至 LIMIT ?,? 和 $stmt->bindParam(':offset',PDO::PARAM_INT);
$stmt->bindParam(':limit',PDO::PARAM_INT);
至: $stmt->bindValue($index+1,PDO::PARAM_INT); $stmt->bindValue($index+2,PDO::PARAM_INT); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
