Thema Anführungszeichen :-(((
Ferdi
- php
Hi,
wenn ich mit dieser Abfrage richtig liege:
$query_mail="select UserEmail,UserSignatur from user where UserName ="Peter"";
Wie muß dann die Abfrage lauten, wenn sich das Script den Peter aus $User herausnehmen soll?
Ich habs mit folgender versucht, das geht aber nicht:
$query_mail="select UserEmail,UserSignatur from user where UserName ="."$User".";
Grüße, Ferdi
Lieber Ferdi,
$query_mail="select UserEmail,UserSignatur from user where UserName ="."$User".";
entweder
$query_mail = "select UserEmail,UserSignatur from user where UserName =\"$User\"";
oder
$query_mail = "select UserEmail,UserSignatur from user where UserName =\"".$User."\"";
oder
$query_mail = 'select UserEmail,UserSignatur from user where UserName = "$User"';
oder
$query_mail = 'select UserEmail,UserSignatur from user where UserName ="'.$User.'"';
Ich habe von SQL-Queries keine Ahnung, daher weiß ich auch nicht, ob Deine Abfrage-Syntax das Leerzeichen nach UserName erlaubt.
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
Ich habe von SQL-Queries keine Ahnung, daher weiß ich auch nicht, ob Deine Abfrage-Syntax das Leerzeichen nach UserName erlaubt.
ich halte Dir zu Gute, dass Du von SQL keine Ahnung hast, aber Du hast hier im Forum bestimmt schon oft genug gelesen, dass man kontextspezifisch behandeln soll. Alle von Dir vorgeschlagenen Formen ignorieren das.
Beim Zusammenbau eines SQL-Statements so wie es der OP vorhat, wären
mysqli_real_escape_string bei Verwendung von mysqli bzw. mysql_real_escape_string bei der Verwendung der veralteten mysql_*-Funktionen dazu zuständig. Besser wäre die Verwendung von mysqli in Verbindung mit Prepared Statements.
Weiterhin ist es in SQL üblich (manche SQL-Dialekte erlauben sogar nichts anderes), Zeichenketten in einfache Anführungszeichen zu setzen.
$query_mail="select UserEmail,UserSignatur from user where UserName ="."$User".";
Weiterhin bietet sich die Verwendung von sprintf() an, um die PHP-Anweisung lesbarer zu gestalten:
$query_mail = sprintf(
"[code lang=sql]SELECT UserEmail, UserSignatur FROM user WHERE UserName = '%s'
~~~",
mysql(i)\_real\_escape\_string($User));
[/code]
Beachte die von mir geänderte Groß- und Kleinschreibung. In SQL ist es üblich, SQL-Schlüsselwörter groß zu schreiben. Es gibt Datenbankmanagementsysteme, die diese Umwandlung als einen der ersten Schritte beim Parsen eines Statements vornehmen.
Freundliche Grüße
Vinzenz
Hi,
$query_mail = 'select UserEmail,UserSignatur from user where UserName = "$User"';
Diese Variante nicht. Innerhalb von '' werden Variablen in PHP nämlich NICHT interpoliert.
cu,
Andreas