I was testing foreign keys in MySQL. The objective is to prevent the entry of an id
into table2
, that does not exist in table1
. I was hoping that using foreign keys
would simply result in a row not being inserted, but it seems to throw up this huge error. How do I handle this in PHP? Is there a way to make MySQL simply not insert the row and return no rows returned?
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
, CONSTRAINTborrowed_ibfk_1
FOREIGN KEY (employeeid
) REFERENCESemployee
(id
) ON DELETE CASCADE ON UPDATE CASCADE)' in C:\web\apache\htdocs\dev\foreign.php:10Stack 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
use try catch
try {
$pdo->exec ("QUERY WITH SYNTAX ERROR");
} catch (PDOException $e) {
if ($e->getCode() == '23000')
echo "Syntax Error: ".$e->getMessage();
}
Read PDOStatement::errorCode
taken from 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 ofSQLException
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With