5

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

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(wp-dbborrowed,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()

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

4

1 回答 1

4

使用尝试捕获

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 开头的类保留用于此类特定于实现的扩展。可以通过以下getSQLState()方法检索特定 JDBC 操作的 SQLSTATE 代码SQLException

于 2013-08-30T06:09:23.073 回答