php – PDO:参数号无效:混合命名和位置参数

前端之家收集整理的这篇文章主要介绍了php – PDO:参数号无效:混合命名和位置参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到过这个我以前没看过的警告:

Warning: PDOStatement::execute() [pdostatement.execute]: sqlSTATE[HY093]: Invalid parameter number: mixed named and positional parameters in…

参考以下PDO查询(简化了易于阅读的功能):

@H_404_7@$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查询工作正常,没有查询中包含的偏移量和限制变量.那么可能导致这个警告呢?

谢谢

更改 @H_404_7@LIMIT :offset,:limit

@H_404_7@LIMIT ?,?

@H_404_7@$stmt->bindParam(':offset',PDO::PARAM_INT); $stmt->bindParam(':limit',PDO::PARAM_INT);

至:

@H_404_7@$stmt->bindValue($index+1,PDO::PARAM_INT); $stmt->bindValue($index+2,PDO::PARAM_INT);

猜你在找的PHP相关文章