PDO版本问题 Invalid parameter number: no parameters were bound

yipeiwu_com6年前PHP代码库

今天在处理bug的时候发现某一个很奇怪的问题,在执行某类操作的时候会报:Invalid parameter number: no parameters were bound,但是该问题在本地或是测试机上测试都没有重现,猜想是否和版本有关,于是就google了下,发现http://forum.typecho.org/topic.php?id=1501 该文的二楼说道,该问题是版本的bug,在php5.2.9以下的pdo中会出现。于是就是找了团队中另外一位同时的机子(5.2.6)做测试,果然重现该问题,他的服务器上5.2.17上测试,该问题没有出现。

在调试的时候,发现出现该类操作的时候有如下业务报以上错误:

用PDO往表nw_log(表字段一些列uid之类的,及content字段)中插入一条数据,其中content字段的内容为<a href='http://a.xxx/?tid=1'>test</a>,并且在入库之前表字段的内容会调用PDO->quote方法进行转义。在php5.2.6机子上则报如上错误,但是在5.2.17机子上表现正常。

当我仅仅只是将内容修改为http://a.xxx/?tid=1的时候,在5.2.6机子上和5.2.17机子上均表现正常,于是再次将内容格式调试为<a href="http://a.xxx/?tid=1">test</a>,则5.2.6及5.2.17上均表现正常,看来是单引号惹的祸。

相关文章

PHP三元运算符的结合性介绍

先看一个三元运算式子: 复制代码 代码如下: <?php $a=1;$b=2;$c=3;$d=4; echo $a<$b?'xx':$a<$c?'yy':$a<$...

php查看session内容的函数

如:name|s:4:"tasm";passwd|s:6:"111111";mode|s:1:"1",也知道该session存放的位置,而且可以上传文件,所以嘛,当时就做了一次小小的黑客...

php支付宝接口用法分析

本文实例讲述了php支付宝接口用法。分享给大家供大家参考。具体分析如下: 现在流行的网站支持平台,支付宝当仁不让的老大了,现在我们就来告诉你如何使用支付宝api来做第三方支付,把支付宝放...

php简单实现短网址(短链)还原的方法(测试可用)

php简单实现短网址(短链)还原的方法(测试可用)

本文实例讲述了php简单实现短网址还原的方法。分享给大家供大家参考,具体如下: 这里以【宜配屋www.yipeiwu.com】//www.jb51.net的短网址http://t.cn/...

PHP使用PDO操作数据库的乱码问题解决方法

本文实例讲述了PHP使用PDO操作数据库的乱码问题解决方法。分享给大家供大家参考,具体如下: 当使用 PDO 连接操作数据库的时候,有时会出现:保存在数据库中的汉字为乱码。以文件为 UT...