errorCode()

1. 定义

该方法获取数据库上一次操作的错误码。 返回值由五个字母或数字组成的在 ANSI SQL 标准中定义的标识符,前两个字符为类值,后三个字符为子类值。

如果未在数据库操作句柄发生操作或者未发生任何错误时,将返回00000

注:

  • 该方法对预处理执行的语句不生效!

2. 语法

PDO::errorCode ( void ) : mixed

3. 参数说明

该方法不传入任何参数。

4. 示例

<?php

// PDO::errorCode()
// 获取数据库上一次操作的SQLSTATE

try {
    $config = ['driver' => 'mysql', 'host' => 'localhost', 'dbname' => 'test', 'charset' => 'utf8', 'user' => 'root', 'pwd' => 'mysql'];
    $dsn = sprintf('%s:host=%s;dbname=%s;charset=%s', $config['driver'], $config['host'], $config['dbname'], $config['charset']);
    $conn = new PDO($dsn, $config['user'], $config['pwd']);

} catch (PDOException $e) {
    error_log($e->getMessage()); // 将错误信息记录至日志
    echo $e->getMessage();
}

try {

    $stmt = $conn->prepare('DELETE FROM `movie` WHERE `id` > 0 LIMIT 1');// 没有错误
    $stmt->execute();
    var_dump($conn->errorCode());// 输出:string(5) "00000"

    $conn->query('DELETE FROM `movie` WHERE `id` > 0 LIMIT 1');// 没有错误
    var_dump($conn->errorCode());// 输出:string(5) "00000"

    $stmt = $conn->prepare('INSERT INTO `no_exits`(`id`) VALUES(1)');// 查询的表格不存在
    $stmt->execute();
    var_dump($conn->errorCode());// 输出:string(5) "00000"

    $conn->exec('INSERT INTO `no_exits`(`id`) VALUES(1)');// 查询的表格不存在
    var_dump($conn->errorCode());// 输出:string(5) "42S02"

} catch (Exception $e) {
    echo "发生了错误:",$e->getMessage();
}

5. 延展阅读