2013-08-30 21 views
5

私はMySQLの外部キーをテストしていました。目的はidの入力をtable2に防止することです。これはtable1には存在しません。私はforeign keysを使用すると、単に行が挿入されないという結果になることを期待していましたが、この巨大なエラーをスローするようです。 PHPでこれをどうやって処理するのですか? MySQLを単純に行を挿入せずに戻さない行に戻す方法はありますか?PHPのMySQLの外部キーエラーを処理するには?

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (wp-db . borrowed , CONSTRAINT borrowed_ibfk_1 FOREIGN KEY (employeeid) REFERENCES employee (id) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\web\apache\htdocs\dev\foreign.php:10

Stack trace:

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

#1 {main} thrown in C:\web\apache\htdocs\dev\foreign.php on line 10

答えて

4

使用トライキャッチ

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

読むPDOStatement::errorCode

Return Code listから取ら

The SQL-92 standard defines a set of SQLSTATE return codes. SQLSTATE is defined as a five-character string, where the leftmost two characters define the error class, and the remaining three characters define the error subclass. Some database vendors may extend these return codes; classes beginning with the numbers 5 through 9 and letters I through Z are reserved for such implementation-specific extensions. The SQLSTATE code for a particular JDBC action can be retrieved via the getSQLState() method of SQLException

関連する問題