我在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 代码可以是 通过
SQLException
的getSQLState()
方法检索