mysqli ou mourir, doit-il mourir?
Si j'utilise un peu de code comme ceci:
$update_result = mysqli_query( $link , $sql_update_login ) or die ('Unable to execute query. '. mysqli_error($link));
- T-il mourir ou pouvez-vous mettre une autre requête par la suite? Comme une fonction prédéterminée qui écrit un journal de l'erreur à une autre table? Tels que:
$update_result = mysqli_query( $link , $sql_update_login ) or function('$query, $error);
Quelles sont les autres options après 'ou'? Je n'ai pas trouvé dans la documentation, tous les indices sont appréciés.
source d'informationauteur Maelish | 2013-03-10
Vous devez vous connecter pour publier un commentaire.
Tout à fait contraire, il ne devrait pas
die()
jamais.PHP est un langage de mauvaise hérédité. Très mauvaise hérédité. Et
or die()
avec le message d'erreur étant l'un des pires rudiments:die()
vous donne aucun indice de la endroit où l'erreur s'est produite. Et en relativement grande application, il sera assez difficile à trouver.De ne jamais utiliser
die()
avec mysql erreurs, même pour le temporaire de débogage: il existe de meilleures façons.Pour votre requête, vous avez 2 choix:
si vous allez utiliser
mysqli_query()
tout le chemin dans le code de votre application (ce qui est faux, mais sur StackOverflow, vous ne serez jamais enseigné d'une autre façon), vous pouvez utilisertrigger_error()
au lieu de mourir. Elle soulèvera un classique erreur PHP et seront enregistrés automatiquement selon les paramètres de PHP.si vous allez utiliser
mysqli_query()
comme une partie de l'abstraction de la bibliothèque, vous devez lancer une nouvelle Exception au lieu de cela, car vous aurez besoin d'une trace de la pile (qui a toujours fourni avec exception) pour avoir une idée de l'endroit où l'erreur s'est produite.Cependant, vous ne pouvez pas utiliser
new Exception
avec leOR
de l'opérateur. Donc, le code devient un peu plus longtemps:Qui n'est pas une grosse affaire que vous avez à écrire qu'une seule fois.
Mise à jour. Comme il s'est avéré, mysqli est en mesure de lever des exceptions par lui-mêmequi peut nous soulager de la rédaction du code de manutention manuelle:
Ce code va lever une exception en cas d'erreur et ainsi vous serez toujours informé sans code supplémentaire. Cependant, dans les exemples précédents, nous avons une requête SQL ajouté au message d'erreur, qui peut être très utile, donc, on pourrait s'en tenir à des méthodes mentionnées ci-dessus.
Une remarque importante
C'est apparemment un mauvaise idée. Surtout si vous voulez écrire un message d'erreur à la même support échec de la précédente tentative.
Les erreurs à être connecté à la plupart des support robuste - un journal en texte brut. Donc, il suffit de configurer votre PHP pour écrire les journaux d'erreur et de les vérifier régulièrement.
or
est juste un opérateur (très similaire à||
).La
or die()
syntaxe fonctionne parce queor
les courts-circuits, ce qui signifie que si la première affirmation est vraie,True or X
sera toujours vrai, doncX
n'est pas évaluée et votre script n'est pasdie
.Oui, vous pouvez fournir une fonction différente après la (ou les).
J'ai testé le suivant:
Il n'a pas à être
die()
en particulier, mais il doit être quelque chose qui va rendre le script arrêter en appelantexit()
oudie()
ou quelque chose qui déclenche une exception. Sinon, le script va continuer avec la valeur de retour de cette fonction (qui est probablement la valeur null ou une sorte de indésirable) en$update_result
qui va certainement causer des problèmes.