2013-08-30 21 views
5

Stavo testando chiavi esterne in MySQL. L'obiettivo è impedire l'immissione diin table2, che non esiste in table1. Speravo che l'utilizzo di foreign keys comportasse semplicemente il mancato inserimento di una riga, ma sembra che questo enorme errore sia stato generato. Come gestisco questo in PHP? C'è un modo per rendere MySQL semplicemente non inserire la riga e non restituire alcuna riga restituita?Come gestire l'errore di chiave esterna di MySQL in PHP?

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

risposta

4

uso try cattura

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

Leggi PDOStatement::errorCode

tratto da 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

Problemi correlati