Ferdi: Thema Anführungszeichen :-(((

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

  1. 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. 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
      
    2. 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

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.