Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment puis-je vérifier la contrainte de clé étrangère sur la restriction de suppression à l'aide de PHP

Utiliser les exceptions :

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

Vous pouvez également créer vos propres exceptions pour vous spécialiser dans les erreurs FK :

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

Lorsqu'une erreur FK se produit, vous throw new ForeignKeyException('FK failed');

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

Mise à jour :

mysqli a déjà des exceptions :

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

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

Voir les codes d'erreur MYSQLI :http://dev. mysql.com/doc/refman/5.6/en/error-messages-server.html

Une autre question utile :Gestion des exceptions de clé étrangère en PHP

Mise à jour pour la 2e question :

Désactiver les clés étrangères par

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