fastix®: "mysql_num_rows"-Warning

Beitrag lesen

Moin!

$sql='SELECT id FROM benutzer WHERE Email LIKE "'.mysql_real_escape_string($emailInput, $verbindung).'"';
...ich verstehe nicht warum ich das so "kompliziert" machen muss und meine Methode nicht möglich ist.

Möglich ja. Aber mit der Gefahr verbunden, dass es dann eben auch möglich ist, statt eine Mailadresse etwas in die Datenbank einzutragen oder auf Deiner Webseite auszugeben, was Du gewiss nicht willst. Und die Mailadresse stammt hier von außen, ist also eine Eingabe, die Du nicht kennst, gilt damit "tainted".

...ich dachte "LIKE" ist gleichzusetzen mit "=" und "NOT LIKE" mit "!=", was du mit Platzhalter meinst ist mir jedoch nicht klar.

Mit LIKE "%a%" bekommst Du alle Strings zurück, die ein "a" enthalten.
Mit LIKE "a%" bekommst Du alle Strings zurück, die mit "a" beginnen.
Mit LIKE "%a" bekommst Du alle Strings zurück, die mit "a" enden.
Das %-Zeichen ist der Platzhalter.

Es geht nicht um "Geht oder geht nicht", es geht um Performance beim Programmieren, Debuggen und Ausführen. Jeder, der den Code mit LIKE sieht sucht nach dem %-Zeichen. Und... versuche mal einen String mit dem Prozentzeichen zu finden wenn Du Like verwendest. Das darfst Du dann maskieren...

Worin liegt der Unterschied bei der Verwendung von "   '   `

Backticks [`] um Namen (Datenbanken, Tabellen, Spalten)
Einfache Quotas ['],  und doppelte ["] haben prinzipiell den gleichen Verwendungszweck: Es sind Stringbegrenzer. Dabei können diese in vielen Programmiersprachen "überkreuz" verwendet werden und sparen so das Maskieren:

'a' liefert a
"a" liefert a
'"a"' liefert 'a'
"'a'" liefert "a"
""a"" - liefert "a" - in Sprachen, in denen der Backslash als Maskierungszeichen verwendet wird.
''a'' - liefert 'a'
'"a'" - Fehler
"'a"' - Fehler

In einigen Programmierspachen gibt es einen wesentlichen Unterschied zwischen einfachen und doppelten Quotas. Folgendes funktioniert mindestens in PHP und Perl mit kleinen Abweichungen (ohne die Dollar-Symbole bei der Wertzuweisung) auch in einem sh- oder bash-Skript:

$a = 'Hallo ';
$b = 'Welt!';

echo "$a$b";

Hallo Welt!

(Die Werte werden ausgegeben)

echo '$a$b';

$a$b

(Die Variablennamen werden ausgegeben)

Verstanden?

MFFG (Mit freundlich- friedfertigem Grinsen)

fastix