ingobar: globale Variablen und mysql geht nicht

Hallo,

leider habe ich doch noch eine Frage. Also folgendes: Ich habe mittels

define('USER_NAME', 'Mustermann');
define('USER_VNAME', 'Max');

zwei Konstanten definiert. Mittels

$erg = @mysql_query('SELECT * FROM userdata WHERE name=USER_NAME AND vorname=USER_VNAME');

mache ich eine Abfrage. Leider funktioniert sie nicht.

$erg = @mysql_query("SELECT * FROM userdata WHERE name='USER_NAME' AND vorname='USER_VNAME'");

Geht zwar, liefert aber natürlich nur falsche Ergebnisse.

$erg = @mysql_query("SELECT * FROM userdata WHERE name=USER_NAME AND vorname=USER_VNAME");

Liefert eine Fehlermeldung.

Wie ist die korrekte Syntax?

  1. echo $begrüßung;

    define('USER_NAME', 'Mustermann');
    define('USER_VNAME', 'Max');
    $erg = @mysql_query('SELECT * FROM userdata WHERE name=USER_NAME AND vorname=USER_VNAME');
    $erg = @mysql_query("SELECT * FROM userdata WHERE name='USER_NAME' AND vorname='USER_VNAME'");
    $erg = @mysql_query("SELECT * FROM userdata WHERE name=USER_NAME AND vorname=USER_VNAME");

    Konstanten sind keine Variablen. Nur Variablen werden innerhalb von ""-Strings erkannt und durch ihren Inhalt ersetzt.

    Wie ist die korrekte Syntax?

    Setze den String aus Einzelteilen zusammen, verwende sprintf() oder verwende Prepared Statements (PHP5 und die mysqli-Extension vorausgesetzt).

    echo "$verabschiedung $name";