sql >> Databáze >  >> RDS >> Mysql

jak mohu zkontrolovat omezení cizího klíče na omezení odstranění pomocí PHP

Použít výjimky:

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

Můžete také vytvořit své vlastní výjimky, které se specializují na chyby FK:

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

Když dojde k chybě FK, throw new ForeignKeyException('FK failed');

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

Aktualizace:

mysqli již má výjimky:

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

Výjimka PHP mysqli:http://php.net/manual/en /class.mysqli-sql-exception.php

Viz kódy chyb MYSQLI:http://dev. mysql.com/doc/refman/5.6/en/error-messages-server.html

Další užitečná otázka:Zpracování výjimek cizího klíče v PHP

Aktualizace pro 2. otázku:

Zakázat cizí klíče pomocí

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


  1. PDO bindParam() s více pojmenovanými parametry

  2. Výsledkem rozdělení je dotaz na součet

  3. přihlaste se jako správce a normální uživatel

  4. exportovat obsah tabulky databáze mysql do souboru PDF pomocí php