PDO捕获异常的问题

发布于 2022-09-04 06:08:40 字数 1696 浏览 13 评论 0

class sql extends \PDO
    {
        public $error;
        public function __construct()
        {
            $this->error = NULL;
            $database    = conf::all( 'database.conf' , NULL );
            try
            {
                parent::__construct( $database['DSN'] , $database['MYSQLNAME'] , $database['MYSQLPASS'] , $database['OPTION'] );
                parent::query( "set names utf8" );
            }
            catch ( \PDOException $e )
            {
                die( $e->getMessage() );
            }
        }

        public function crt( $table , $paramArr )
        {
            $column = $paramArr['column'];
            $value  = $paramArr['value'];
            $bind   = $paramArr['bind'];
            $len    = count( $bind );
            try
            {
                $sql    = "insertsss into $table($column) values($value)";
                $preObj = $this->prepare( $sql );
                for ( $i = 0; $i < $len; $i++ )
                {
                    $preObj->bindParam( $i+1 , $bind[$i] );
                }
                $preObj->execute();
                $res = $this->lastInsertId();
            }
            catch ( \PDOException $e )
            {
                die( $e->getMessage() );
            }

            \common\p(”pdo怎么玩“);exit;
            return $res && $this->error == NULL ? TRUE : FALSE;
        }

故意把sql写错为什么没有报错,输出了”pdo怎么玩“?

\common\p($this->errorInfo());exit;

errorInfo()永远是

Array
(
    [0] => 00000
    [1] => 
    [2] => 
)

初始化那个方法里 如果改错配置,能够正常抛出异常,但是crt方法里不知道为什么没反应?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆光下的微笑 2022-09-11 06:08:41

设置这个 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文