dpmp9359 2016-10-17 07:59
浏览 65
已采纳

2006年从mysqli迁移到PDO的错误代码映射

I'm converting a PHP code, which uses mysqli for connecting to mysql database, to a PHP code that uses PDO for connecting to mysql database.

Is there a SQLSTATE which is equivalent to the error code 2006 in mysqli?

Because a piece of my code is written like this:

switch($this->_dbi->errno){
    case 2006:
        $this->close();
        throw new Exception();
        break;
}

How can I use PDO to rewrite this code?

SQLSTATE is the return value of PDO::errorCode.

Error 2006(CR_SERVER_GONE_ERROR) means MySQL server has gone away

  • 写回答

1条回答 默认 最新

  • dongshu9458 2016-10-18 06:08
    关注

    You can use the array of PDO::errorInfo. There you get an array like the following:

    Array
    (
        [0] => HY000
        [1] => 1
        [2] => near "bogus": syntax error
    )
    
    • 0: This is the same value like on PDO::errorCode.
    • 1: The error number. Different between the database providers, but here would be your error number 2006.
    • 2: The error message / description.

    Your example would look like this:

    switch ($pdo->errorInfo()[1]) {
        case 2006:
            $this->close();
            throw new Exception();
            break;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置