我在MySQL中测试外键。目标是阻止id
进入table2
,table1
中不存在foreign keys
。我希望使用wp-db
只会导致一行未被插入,但它似乎会引发这个巨大的错误。我如何在PHP中处理这个?有没有办法让MySQL根本不插入行并返回没有返回的行?
致命错误:带有消息'SQLSTATE [23000]的未捕获异常'PDOException':完整性约束违规:1452无法添加或更新子行:外键约束失败(
borrowed
。borrowed_ibfk_1
,约束employeeid
FOREIGN KEY(employee
)引用id
({{1}})在C:\ web \ apache \ htdocs \ dev \ foreign中的“更新CASCADE上的删除级联”)。 PHP:10堆栈追踪:
#0 C:\ web \ apache \ htdocs \ dev \ foreign.php(10):PDOStatement-> execute()
在第10行的C:\ web \ apache \ htdocs \ dev \ foreign.php中抛出#1 {main}
答案 0 :(得分:4)
使用try catch
try {
$pdo->exec ("QUERY WITH SYNTAX ERROR");
} catch (PDOException $e) {
if ($e->getCode() == '23000')
echo "Syntax Error: ".$e->getMessage();
}
SQL-92标准定义了一组SQLSTATE返回码。 SQLSTATE 被定义为五个字符的字符串,其中最左边的两个字符串 字符定义错误类,以及其余三个字符 定义错误子类。一些数据库供应商可以扩展它们 返回码;以数字5到9开头的类 字母I到Z保留用于特定于实现的 扩展。特定JDBC操作的SQLSTATE代码可以是 通过
的getSQLState()
SQLException
方法检索