如何在Php中处理MySQL的外键错误?

Nor*_*man 5 php mysql sql database

我在MySQL中测试外键.目标是防止id进入table2,而不存在table1.我希望使用foreign keys只会导致一行没有插入,但它似乎抛出了这个巨大的错误.我如何在PHP中处理这个?有没有办法让MySQL根本不插入行并返回没有返回的行?

致命错误:未捕获异常'PDOException',消息'SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(wp-db.borrowed,CONSTRAINT borrowed_ibfk_1FOREIGN KEY(employeeid)REFERENCES employee(id)ON DELETE CASCADE ON UPDATE CASCADE)'在C:\ web\apache\htdocs\dev\foreign.php:10

堆栈跟踪:

#0 C:\ web\apache\htdocs\dev\foreign.php(10):PDOStatement-> execute()

在第10行的C:\ web\apache\htdocs\dev\foreign.php中抛出#1 {main}

diE*_*cho 4

使用尝试捕获

try { 
    $pdo->exec ("QUERY WITH SYNTAX ERROR"); 
} catch (PDOException $e) { 
    if ($e->getCode() == '23000') 
        echo "Syntax Error: ".$e->getMessage(); 
}
Run Code Online (Sandbox Code Playgroud)

PDOStatement::errorCode

取自返回代码列表

SQL-92 标准定义了一组 SQLSTATE 返回代码。SQLSTATE 被定义为一个五个字符的字符串,其中最左边的两个字符定义错误类,其余三个字符定义错误子类。一些数据库供应商可能会扩展这些返回代码;以数字 5 到 9 和字母 I 到 Z 开头的类被保留用于此类特定于实现的扩展。getSQLState()可以通过以下方法检索特定 JDBC 操作的 SQLSTATE 代码SQLException