开发者社区> 问答> 正文

PDO既不报错, 亦没效果。求助?报错

$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)


,没有报错,但是执行结果为0

为什么啊。。。



展开
收起
爱吃鱼的程序员 2020-06-22 12:52:41 454 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    $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">

    引用来自“lazyphp”的答案

    <divclass=ref_body>

    <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错误显示,使用以上方式,开启异常方式提示。

    2020-06-22 12:52:59
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载