$result = $this->_oDb->prepare('INSERT INTO '. __DB_PREFIX.'memsbers(username,passshash,permission,uicon,realname) VALUES(:sUsername,:sPassHash,:sPermission,:sUicon,:sRealname)'); $result->bindParam(':sUsername', $aOpt['username']); $result->bindParam(':sPassHash', md5($aOpt['passwd'])); $result->bindParam(':sPermission', serialize(array( 'identity' => 'admin', 'permission' => array( 'login' => $aOpt['pLogin']?: true, 'manageAccount' => $aOpt['pManageAccount']?: false ) ))); $result->bindParam(':sUicon', $aOpt['uicon']); $result->bindParam(':sRealname', $aOpt['name']); try { $result->execute(); echo "x".$result->rowCount()."y"; da($this->_oDb->errorInfo()); da($aOpt); } catch(PDOException $e) { echo $e->getMessage(); } return true;
页面执行结果
===================================
x0y
array (size=3)
0 => string '00000' (length=5)
1 => null
2 => null
array (size=5)
'username' => &string 'huangdan' (length=8)
'passwd' => string 'hd19891020' (length=10)
'name' => &string '黄丹' (length=6)
'uicon' => &string 'a:2:{s:6:"origin";s:11:"default.jpg";s:4:"crop";s:11:"default.jpg";}' (length=68)
'uiconCropCoord' => string '0,0,0,0' (length=7)
为什么啊。。。
$this->_oDb 就是个PDO对象
<spanstyle="line-height:1.5;font-size:10pt;">检查一下SQL语句是否正确。
<spanstyle="line-height:1.5;font-size:10pt;">echo<spanstyle="font-size:10pt;font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.666666030883789px;background-color:#FFFFFF;"> <spanstyle="line-height:1.5;font-size:10pt;">"x".$result->rowCount()."y";<spanstyle="line-height:1.5;font-size:10pt;">
改成
<spanstyle="font-size:10pt;line-height:1.5;">echo<spanstyle="font-size:10pt;font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.666666030883789px;background-color:#FFFFFF;"> <spanstyle="font-size:10pt;line-height:1.5;">"x".$result->lastInsertId()."y";<spanstyle="font-size:10pt;line-height:1.5;">
试下
<divclass="ref"><spanstyle="line-height:1.5;font-size:10pt;">检查一下SQL语句是否正确。
<spanstyle="line-height:1.5;font-size:10pt;">echo<spanstyle="font-size:10pt;font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.666666030883789px;background-color:#FFFFFF;"> <spanstyle="line-height:1.5;font-size:10pt;">"x".$result->rowCount()."y";<spanstyle="line-height:1.5;font-size:10pt;">
改成
<spanstyle="font-size:10pt;line-height:1.5;">echo<spanstyle="font-size:10pt;font-family:Consolas,'BitstreamVeraSansMono','CourierNew',Courier,monospace;line-height:14.666666030883789px;background-color:#FFFFFF;"> <spanstyle="font-size:10pt;line-height:1.5;">"x".$result->lastInsertId()."y";<spanstyle="font-size:10pt;line-height:1.5;">
试下
回复<aclass='referer'target='_blank'>@Solowave:先将语句转换为最原始的SQL。确保执行没错了,在转换回PDO的占位符。我学PDO时,也遇过这种情况,我都是这样调试的。回复<aclass='referer'target='_blank'>@lazyphp:pdo我不会调试。。。。先检查确保SQL语句是否正常 判断一下$result->execute();是否执行成功。aopt数组有数据吗?那会不会是prepare没有返回的情况,试试绑定用thisodb这个,而不是返回那个求助正文里最下面打印出来的那个数组就是$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
估计是你屏蔽了php错误显示,使用以上方式,开启异常方式提示。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。