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

时间:2013-08-30 06:00:38

标签: php mysql sql database

我在MySQL中测试外键。目标是阻止id进入table2table1中不存在foreign keys。我希望使用wp-db只会导致一行未被插入,但它似乎会引发这个巨大的错误。我如何在PHP中处理这个?有没有办法让MySQL根本不插入行并返回没有返回的行?

  

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

1 个答案:

答案 0 :(得分:4)

使用try catch

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

阅读PDOStatement::errorCode

取自Return Code list

  

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

SQLException方法检索
相关问题