mySQL liefert alle Zeilen, wenn Feld=0
Ich machte einige tests, und es war eine überraschung als ich das Abfragen einer Tabelle und die Abfrage SELECT * FROM table WHERE email=0
zurückgegeben werden alle Zeilen aus der Tabelle.
Diese Tabelle hat keine '0' - Werte, und es ist gefüllt mit regelmäßigen e-mails.
Warum dies passiert? Dies kann dazu führen, dass schwere Sicherheitsprobleme.
Gibt es eine Möglichkeit, dies zu vermeiden, ohne die Abfrage zu ändern?
Bin ich hier etwas fehlt?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil es die Umwandlung der E-Mail-Feld (was ich davon ausgehen ist ein varchar-Feld) in eine Ganzzahl. Jedes Feld ohne eine gültige Ganzzahl wird gleich 0. Sie sollten sicherstellen, dass Sie vergleichen Sie nur Zeichenfolgen-Felder in string-Werte (gilt auch für Termine, im Vergleich zu den Daten). Die Abfrage sollte wie folgt sein.
Ihre
email
Spalte ist einCHAR
oderVARCHAR
geben. Wenn Sie die Bedingungemail = 0
-, MySQL-casting-die Inhalte deremail
Spalte auf eine Ganzzahl, um Sie zu vergleichen mit der 0, die Sie angegeben. Hatte Sie umgeben Ihre 0 in Anführungszeichen, die Abfrage würde funktionieren wie erwartet. (email = '0'
)Konvertierung von nicht-numerischen string in einen integer in MySQL wird das Ergebnis in 0.
Im Gegensatz dazu, wenn man versucht, die gleiche Sache mit numerischen strings, können Sie cast richtig:
Feld E-Mail ist wohl Zeichen und entsprechen Sie numerische Werte.
Versuchen,
wenn Sie möchten, um alle Aufzeichnungen in der E-Mail-Spalte nicht leer oder leer ist, dann können Sie