sql >> Databasteknik >  >> RDS >> Mysql

hur kan jag kontrollera utländsk nyckel-begränsning vid raderingsbegränsning med PHP

Använd undantag:

try {
    $db->query(...);
} catch (Exception $e) {
    echo "an error occured during query";
}

Du kan också göra dina egna undantag för att specialisera dig på FK-fel:

class ForeignKeyException extends Exception {
    public function __construct($msg = 0, $code = 0) {
        parent::__construct($msg, $code);
    }
}

När FK-fel uppstår, throw new ForeignKeyException('FK failed');

try {
    $db->query(...);
} catch (ForeignKeyException $e) {
    echo "FK error";
} catch (Exception $e) {
    echo "general error";
}

Uppdatering:

mysqli har redan undantag:

} catch (mysqli_sql_exception $e) {
    if ($e->getCode() == 'CODE FOR FK') {
        //...
    }
}

PHP mysqli undantag:http://php.net/manual/en /class.mysqli-sql-exception.php

Se MYSQLI-felkoder:http://dev. mysql.com/doc/refman/5.6/en/error-messages-server.html

En annan användbar fråga:Hantera undantag för främmande nyckel i PHP

Uppdatering för andra frågan:

Inaktivera främmande nycklar med

SET foreign_key_checks = 0;
<your delete query here>
SET foreign_key_checks = 1;


  1. Är det möjligt att använda mysqli som databasdrivrutin i Laravel?

  2. Heads in the cloud på CHAR(10)

  3. Hur använder man yttre full sammanfogning i laravel 5.0?

  4. SQRT() Funktion i Oracle