Position actuelle: Accueil> Derniers articles> Utiliser MySqli :: Get_Warnings sans aucun avertissement? Comment résoudre les problèmes?

Utiliser MySqli :: Get_Warnings sans aucun avertissement? Comment résoudre les problèmes?

gitbox 2025-08-21
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Voici la partie pré-code ou de déclaration qui n&#39;est pas liée au contenu de l&#39;article,Peut être modifié librement au besoin</span></span><span>
</span><span><span class="hljs-title function_ invoke__">error_reporting</span></span><span>(E_ALL);
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'display_errors'</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h2>utiliser <code>mysqli::</span><span><span class="hljs-variable constant_">get_warnings</span></span><span>

Après l'exécution, appelez get_warnings () pour voir s'il y a un avertissement.

2. Vérifiez le moment de l'appel get_warnings ()

Il doit être appelé immédiatement après l'exécution de SQL et avant l'exécution de l'instruction suivante. Sinon, le message d'avertissement précédent sera effacé.

3. Ilétèrent tous les avertissements

Parfois, il y a plusieurs avertissements qui doivent être en boucle:

 
</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_warnings</span></span><span>();
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"Warning: %s, %s, %s\n"</span></span><span>, </span><span><span class="hljs-variable">$warn</span></span><span>->errno, </span><span><span class="hljs-variable">$warn</span></span><span>->sqlstate, </span><span><span class="hljs-variable">$warn</span></span><span>->message);
    </span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$warn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">next</span></span><span>();
}

4. Vérifiez la configuration du serveur MySQL

Confirmez que le serveur n'éteint pas la sortie d'avertissement, vérifiez si le mode strict est activé dans SQL_Mode , certains modes peuvent entraîner des avertissements comme des erreurs.

 <span class="fun">Afficher des variables comme </span> <span> <span class = "hljs-string"> &#39;sql_mode&#39; </span> </span> <span>;</span>

5. Confirmer l'encodage du client et le type de données

Un décrochage de codage ou un type de champ incohérent peut également provoquer des avertissements pour garantir que la base de données et le jeu de caractères du client sont cohérents et que le type de champ est correct.

4. Exemple de code

 &lt;?php
</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">"user"</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-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}

</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"INSERT INTO test_table (varchar_column) VALUES ('Ceci est une chaîne qui dépasse la limite de longueur du champ...')"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"L&#39;exécution a échoué: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}

</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">get_warnings</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span>) {
    </span><span><span class="hljs-keyword">do</span></span><span> {
        </span><span><span class="hljs-title function_ invoke__">printf</span></span><span>(</span><span><span class="hljs-string">"avertir: numéro de série %d,État %s,information %s\n"</span></span><span>, </span><span><span class="hljs-variable">$warn</span></span><span>->errno, </span><span><span class="hljs-variable">$warn</span></span><span>->sqlstate, </span><span><span class="hljs-variable">$warn</span></span><span>->message);
    } </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$warn</span></span><span> = </span><span><span class="hljs-variable">$warn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">next</span></span><span>());
} </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">"没有avertir产生。\n"</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>

5. Résumé

Lorsque vous constatez que mysqli :: get_warnings () n'a pas d'avertissements, ne doutez pas directement de l'API lui-même, mais confirmez d'abord que l'instruction SQL a des avertissements, si le calendrier et la méthode des appels sont corrects, et si la configuration de l'environnement du serveur et du client est raisonnable. Le dépannage étape par étape peut généralement résoudre le problème et obtenir les informations d'avertissement souhaitées.

J'espère que cet article peut vous aider à mieux comprendre et utiliser MySQLI :: Get_Warnings () pour améliorer l'efficacité de débogage des opérations de base de données.

  • Étiquettes associées:

    mysqli