tutorials.de Buch-Aktion 05/2012
Like Tree5Danke
  • 1 Beitrag von bn
  • 1 Beitrag von sheel
  • 2 Beitrag von Yaslaw
  • 1 Beitrag von Joe
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
558
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    phpameise phpameise ist offline Mitglied Silber
    Registriert seit
    Aug 2011
    Beiträge
    65
    Hi,
    ich hab ein Grammatik Problem. In einem Formular packe ich alle Session-Variablen so in ein Array:
    PHP-Code:
    foreach($_SESSION as $key => $value) {
        
    $data[$key] = filter($value); 
    Danach die Daten in eine Datenbanktabelle.
    PHP-Code:
    $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?
     

  2. #2
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Hi,
    probiers mal in geschweiften Klammern:
    Code sql:
    1
    
    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.
     

  3. #3
    Avatar von bn
    bn bn ist offline Mitglied Brokat
    Registriert seit
    Oct 2002
    Ort
    Berlin
    Beiträge
    395
    Unterbrich die Zeichenkette und nutze den Vereinigungs-Operator ".":
    PHP-Code:
    "INSERT INTO `tblxyz`  
    (`Adresse`, `Email`)  
    VALUES ('" 
    $data['Adresse'] . "', '" $data['formData'][0] . "')" 
    Alles andere ist unsauber und überaus hässlicher Code.

    Grüße BN
    phpameise bedankt sich. 
    Eine Lösung hätte ich schon, aber sie passt nicht zum Problem.

  4. #4
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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 oder?

    mfg Joe.
     

  5. #5
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    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ß
    Joe bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von bn Beitrag anzeigen
    Unterbrich die Zeichenkette und nutze den Vereinigungs-Operator ".":
    PHP-Code:
    "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-Code:
    "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-Code:
    $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
    Joe und phpameise bedanken sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    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.
    phpameise bedankt sich. 

Ähnliche Themen

  1. MYSQL 4.0 insert into in 2 Tab
    Von coastbike im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 11.06.09, 18:28
  2. mysql insert
    Von toadkopf im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 05.06.07, 08:59
  3. INSERT INTO (MySql)
    Von Robert Steichele im Forum PHP
    Antworten: 8
    Letzter Beitrag: 19.01.05, 16:00
  4. INSERT INTO (MySQL)
    Von uwee im Forum PHP
    Antworten: 24
    Letzter Beitrag: 07.01.05, 14:47
  5. \ n, insert, mysql
    Von ohio im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 15.04.03, 10:44

Stichworte