In MySQL gibt eine Abfrage wie SELECT * FROM table WHERE email=0 unerwartet alle Zeilen zurück, obwohl „0“ fehlt ' Werte im E-Mail-Feld der Tabelle. Dies liegt daran, dass das E-Mail-Feld, normalerweise ein Varchar-Typ, automatisch in eine Ganzzahl konvertiert wird.
Da Varchar-Felder nicht-stellige Zeichen aufnehmen können, wird jede E-Mail-Zeichenfolge, die keine gültige Ganzzahldarstellung hat, standardmäßig auf 0 gesetzt. Diese Konvertierung kann zu falschen Übereinstimmungen und potenziellen Sicherheitslücken führen.
Um dieses Problem zu vermeiden, ohne die Abfrage zu ändern, muss unbedingt sichergestellt werden, dass Zeichenfolgenfelder nur mit Zeichenfolgenwerten verglichen werden. Das richtige Abfrageformat für solche Vergleiche wäre:
<code class="sql">SELECT * FROM table WHERE email='0';</code>
Durch das Einschließen des Vergleichswerts in einfache Anführungszeichen (' ') bleibt das E-Mail-Feld eine Zeichenfolge, wodurch eine numerische Konvertierung verhindert und eine genaue Übereinstimmung sichergestellt wird.
Das obige ist der detaillierte Inhalt vonSo vermeiden Sie fehlerhafte Übereinstimmungen in MySQL-Abfragen, indem Sie die numerische Konvertierung verhindern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!