INSERT MySQL

phpameise

Mitglied
Hi,
ich hab ein Grammatik Problem. In einem Formular packe ich alle Session-Variablen so in ein Array:
PHP:
foreach($_SESSION as $key => $value) {
    $data[$key] = filter($value);
Danach die Daten in eine Datenbanktabelle.
PHP:
$users_sql = "INSERT INTO `tblxyz` 
(`Adresse`, `Email`) 
VALUES ('$data[Adresse]','$data[formData][0]')";            
mysql_query($users_sql,$link) or die("Dateneinspielung fehlgeschlagen:" . mysql_error());
Das geht mit der Variablen $data[Adresse], aber mit $data[formData][0] so jedenfalls nicht.
Mag mir jemand helfen? :(
 
Hi,
probiers mal in geschweiften Klammern:
SQL:
VALUES ('$data[Adresse]','{$data[formData][0]}')";

Ansonsten mach mal nen var_dump($data) um zu sehen ob das Array richtig befüllt wurde.

Gruss Joe.
 
Zuletzt bearbeitet von einem Moderator:
Unterbrich die Zeichenkette und nutze den Vereinigungs-Operator ".":
PHP:
"INSERT INTO `tblxyz`  
(`Adresse`, `Email`)  
VALUES ('" . $data['Adresse'] . "', '" . $data['formData'][0] . "')"

Alles andere ist unsauber und überaus hässlicher Code.

Grüße BN
 
Weils mich intressiert:
Du unterbrichst die Zeichenkette mit dem doppelten Anführungszeichen " mitten in der SQL-Anweissung? Und das geht? Ich hatte gedacht das wirft nen Parse-Syntaxerror?
Ich weiss es wirklich nich genau daher meine naive Frage :)

Übers hässlich liesse sich streiten sind doch nur 2 Klammern :D oder?

mfg Joe.
 
Hi

Das ist ganz normale Stringverkettung/Konkatenation/wie auch immer.

So wie man in C++, Java, C# etc.
statt
"Hallo Welt"
auch
"Hallo " + "Welt"
schreiben kann...

in PHP ist es eben der .
"Hallo " . "Welt"
vermutlich um es von der math. Addition abzugrenzen.
In den anderen genannten Sprachen ist es ja eindeutiger,
was eine Zahl und was ein String ist.

Warum sollte das dann einen Error machen?
Ist komplett unabhängig von Sql-String/Normalstring.
Die DB bekommt erst den fertig zusammengehängten String zu sehen.

Gruß
 
  • Gefällt mir
Reaktionen: Joe
Unterbrich die Zeichenkette und nutze den Vereinigungs-Operator ".":
PHP:
"INSERT INTO `tblxyz`  
(`Adresse`, `Email`)  
VALUES ('" . $data['Adresse'] . "', '" . $data['formData'][0] . "')"

Alles andere ist unsauber und überaus hässlicher Code.

Grüße BN

Bin da ganz anderer Meinung. Die viele " und Punkte verwirren mehr. Die Schreibweise mit {} (Complex (curly) syntax) ist mMn am Übersichtlichsten
PHP:
"INSERT INTO `tblxyz`  
(`Adresse`, `Email`)  
VALUES ('{$data['Adresse']}', '{$data['formData'][0]}')"
Wenn du sogar mit eclipse arbeitest, funktioniert auch das Highlighting richtig...

Das hat den weiteren Vorteil dass es auch mit der Heredoc Schreibweise funktioniert. Grad bei komplexeren SQLS sehr angenehm, weil man das SQL sauber formatiert und ohne Unterbrüche schreiben kann. Es ist dann wirklich gut lesbar. (Da drin geht auch ' und " ohne escapen *g*)
PHP:
$sql = <<<SQL
INSERT INTO
    `tblxyz`  
    (`Adresse`, 
    `Email`)
VALUES
    (
       -- Mit ' um den String einzufassen
        '{$data['Adresse']}', 
       -- oder mit " Es geht beides
        "{$data['formData'][0]}"
     )
SQL;

echo $sql;
 
Also hab mir das mit den Klammern auch so angewöhnt und finde die Stringverkettung mit den Punkten auch etwas verwirrrend. Allerdings ist das wahrscheinlich Geschmackssache :)

@sheel
Warum sollte das dann einen Error machen?
Keine Ahnung wie ich drauf komme. Ich war wohl der irrigen Annahme das dies so wäre. Das kommt sicher aus meinen Anfängen mit SQL wo ich manchmal ewig nach syntaktischen Fehlern suchte. Gut zu wissen das es nicht so ist.
 
Zurück