Dans MySQL, une requête comme SELECT * FROM table WHERE email=0 renvoie de manière inattendue toutes les lignes, malgré l'absence de '0 ' valeurs dans le champ email de la table. Cela se produit car le champ e-mail, généralement de type varchar, subit une conversion automatique en nombre entier.
Étant donné que les champs varchar peuvent accueillir des caractères non numériques, toute chaîne de courrier électronique dépourvue d'une représentation entière valide sera par défaut 0. Cette conversion peut entraîner de fausses correspondances et des failles de sécurité potentielles.
Pour éviter ce problème sans modifier la requête, il est crucial de s'assurer que les champs de chaîne sont uniquement comparés aux valeurs de chaîne. Le format de requête correct pour de telles comparaisons serait :
<code class="sql">SELECT * FROM table WHERE email='0';</code>
En plaçant la valeur de comparaison entre guillemets simples (' '), le champ de courrier électronique reste une chaîne, empêchant la conversion numérique et garantissant une correspondance précise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!