Maison > Questions et réponses > le corps du texte
P粉4209586922023-08-25 10:43:00
Non.
Vous devriez pouvoir suivre vos exigences et demander au pilote mysqli de lever des exceptions sur les erreurs SQL, mais vous devrez l'activer s'il n'est pas déjà activé MYSQLI_REPORT_ERROR
....
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
mysqli_query()
Une exception devrait maintenant être levée en cas d'erreur. Vous n'avez pas besoin de vérifier la valeur de retour en cas d'échec (l'exception sera levée de toute façon).
public function mysqlQuery($SQL) { try { $this->Result = mysqli_query($this->DBlink, $SQL); } catch (mysqli_sql_exception $e) { throw new MySQLiQueryException($SQL, $e->getMessage(), $e->getCode()); } return $this->Result; }
(Remarque : je le ferai $this->SQL
更改为$SQL
dans l'exception de renvoi.)
P粉5494120382023-08-25 00:06:47
Il y a quelque temps, j'ai résolu ce problème avec succès. Comme indiqué dans autres réponses,
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
est la bonne façon de dire à mysqli de lever une exception.
Assurez-vous simplement de ne pas inclure try-catch dans chaque requête. C'est une idée fausse très courante : une fois que vous commencez à utiliser des exceptions, vous devriez commencer à lancer des try and catch partout. En revanche, try-catch doit être utilisé avec prudence. Bien que 99 % des erreurs ne doivent pas être traitées sur site mais par un gestionnaire d’erreurs à l’échelle du site. Vous pouvez en savoir plus sur ce sujet dans mon article sur Rapport d'erreurs PHP.