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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |