Comment utiliser mysqli_stmt :: $ error_list pour obtenir et gérer plusieurs messages d'erreur?
La gestion des erreurs est une partie importante du processus de développement lors de l'utilisation d'extensions MySQLI pour les opérations de base de données. Habituellement, nous utilisons mysqli_error () ou mysqli_stmt_error () pour obtenir un seul message d'erreur. Cependant, MySQLI fournit la propriété MySQLI_STMT :: $ ERROR_LIST , qui nous permet de capturer et de gérer plusieurs messages d'erreur lors de l'exécution des instructions de préparation. Ceci est particulièrement important pour les opérations SQL complexes et peut nous aider à mieux déboguer et optimiser le code.
mysqli_stmt :: $ error_list est un tableau de classes qui stockent toutes les informations d'erreur liées à l'objet de déclaration actuel. À travers elle, nous pouvons obtenir une liste détaillée des informations d'erreur, pas seulement une seule erreur. Il renvoie un tableau où chaque élément représente une description spécifique de l'erreur, y compris le code d'erreur et le texte d'erreur.
Pour utiliser MySQLI_STMT :: $ ERROR_LIST , nous devons d'abord créer une connexion MySQLI, puis préparer et exécuter une instruction SQL. Si plusieurs erreurs se produisent pendant l'exécution, $ error_list contiendra tous les messages d'erreur. Ensuite, nous affichons la propriété error_list en accédant à la propriété Error_list.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// créer MySQLi connecter</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);
</span><span><span class="hljs-comment">// examinerconnecter是否成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"connecter失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// Préparer SQL Déclaration</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users (username, email) VALUES (?, ?)"</span></span><span>);
</span><span><span class="hljs-comment">// examiner SQL Déclaration是否Préparer成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"SQL erreur: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
</span><span><span class="hljs-comment">// Lier les paramètres</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"testuser"</span></span><span>;
</span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-string">"invalidemail.com"</span></span><span>; </span><span><span class="hljs-comment">// Supposons que le format de boîte aux lettres ici n'est pas valide</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ss"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>);
</span><span><span class="hljs-comment">// mettre en œuvre SQL Déclaration</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-comment">// 如果有erreur,输出erreur列表</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>->errno) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"mettre en œuvreerreur: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>->error . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"erreur详情:\n"</span></span><span>;
</span><span><span class="hljs-comment">// 打印所有erreur信息</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Insérer avec succès!"</span></span><span>;
}
</span><span><span class="hljs-comment">// 关闭Déclaration和connecter</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Dans cet exemple, nous essayons d'abord d'insérer un élément de données dans le tableau des utilisateurs . Étant donné que la valeur du champ d'e-mail invalidemail.com est incorrecte, MySQL renverra plusieurs messages d'erreur, qui seront enregistrés dans error_list .
Le tableau renvoyé par mysqli_stmt :: $ error_list contient les parties de l'erreur. Habituellement, chaque élément est un tableau associatif contenant deux champs: errno and error . Errno représente un code d'erreur, tandis que l'erreur est une description du message d'erreur. Nous pouvons parcourir ce tableau et sortir les informations détaillées de chaque erreur une par une.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// examiner是否有多个erreur</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">count</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list) > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"存在多个erreur:\n"</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"erreur代码: "</span></span><span> . </span><span><span class="hljs-variable">$error</span></span><span>[</span><span><span class="hljs-string">'errno'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"erreur信息: "</span></span><span> . </span><span><span class="hljs-variable">$error</span></span><span>[</span><span><span class="hljs-string">'error'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Cet exemple sortira chaque code d'erreur et le message d'erreur correspondant un par un. S'il y a plusieurs erreurs, nous pouvons avoir une compréhension plus claire des problèmes qui se produisent et les gérer de manière appropriée pour différentes erreurs.
Un avantage important de l'utilisation de mysqli_stmt :: $ error_list est qu'il peut capturer plusieurs messages d'erreur. Dans certaines opérations de base de données complexes, les erreurs peuvent être causées par plusieurs raisons et Error_List peut aider les développeurs à obtenir toutes les erreurs à la fois, améliorant ainsi l'efficacité de débogage. De plus, de cette manière, nous pouvons contrôler plus attentivement la logique de traitement des erreurs, comme effectuer différentes opérations en fonction de différents types d'erreur.
mysqli_stmt :: $ error_list est une fonctionnalité puissante fournie par MySQLI, qui permet aux développeurs de capturer et de traiter plusieurs messages d'erreur lors de l'exécution d'instructions SQL. En utilisant cette propriété, nous pouvons mieux comprendre les problèmes dans l'exécution de SQL, améliorant ainsi la stabilité des opérations de base de données et la fiabilité du code.
Étiquettes associées:
mysqli_stmt