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


How to handle MySQL's Foreign Key Error in Php?

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

致命错误:未捕获的异常"PDOException",消息为"SQLSTATE[23000]:完整性约束冲突:1452 无法添加或更新子行:外键约束失败 (wp-db .borrowed , 约束 borrowed_ibfk_1 外键 ( employeeid ( 引用 employee ( id ( 在更新级联上删除级联(' 在 C:''web''apache''htdocs''dev''foreign.php:10

堆栈跟踪:

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

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

使用 try catch

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

阅读PDOStatement::errorCode

取自返回代码列表

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