• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ich finde den Fehler nicht

thuemmy

Aktives Mitglied
Guten Morgen Forum,

ich scheine wohl noch nicht ganz munter zu sein. Bei folgendem Scriptschnipsel mault der PHP-Parser
PHP:
  $sql = "UPDATE `gaerten` SET " .
         "`strom` = $_SESSION['strom'], " .
         "`brunnen` = $_SESSION['brunnen'], " .
         "`trink` = $_SESSION['trink'], " .
         "`laubegr` = $db->real_escape_string($_SESSION['laubegr']), " .
         "`gartengr` = $db->real_escape_string($_SESSION['gartengr']), " .
         "`preis` = $db->real_escape_string($_SESSION['preis']), " .
         "`frei` = true, " .
         "`kostenlos` = $_SESSION['kostenlos'], " .
         "`aenderung` = true " .
         "WHERE `nummer` = $_SESSION['nummer'];";
Er bringt mir für die 2. Zeile diese Meldung:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in F:\xampp\htdocs\kgv-neu\intern-gaerten-neu3.php on line 56

Also ich sehe keinen Fehler

Gruß thuemmy
 
Zuletzt bearbeitet:
Werbung:
Hallo,

was soll das immer zwichen den zeilen

das hast
PHP:
$sql = "UPDATE `gaerten` SET " . " `strom` = $_SESSION['strom'], " . "`brun...
vieleicht so
PHP:
$sql = "UPDATE `gaerten` SET `strom` = $_SESSION['strom'], `brun...
Cheffchen
 
PHP:
$sql = "UPDATE `gaerten` SET " .
         "`strom` = " . $_SESSION['strom'] . ", " .
         "`brunnen` = " . $_SESSION['brunnen'] . ", " .
         "`trink` = " . $_SESSION['trink'] . ", " .
         "`laubegr` = " . $db->real_escape_string($_SESSION['laubegr']) . ", " .
         "`gartengr` = " . $db->real_escape_string($_SESSION['gartengr']) . ", " .
         "`preis` = " . $db->real_escape_string($_SESSION['preis']) . ", " .
         "`frei` = true, " .
         "`kostenlos` = " . $_SESSION['kostenlos'] . ", " .
         "`aenderung` = true " .
         "WHERE `nummer` =" .  $_SESSION['nummer'] . ";";
 
Werbung:
Das mit dem "." zwischen den Zeilen ist normalerweise eine übliche Vorgehensweise, um lange Strings miteinander zu verknüpfen (Punkt-Operator). Habe aber das Problem gelöst, obwohl ich auch nicht weiß warum das so ist. Der Parser hat anscheinend Probleme gehabt mit den Variablen im String.

@ mac2k8 - Genauso habe ich es nun gemacht und es funktioniert. Allerdings weiß ich nicht, warum der Parser die Variablen zwischen den Anführungszeichen nicht auflöst.

Gruß thuemmy
 
hi,

hashes (arrays mit Strings als Key) und array schreibt man nicht in den String, du könntest aber statt

$_SESSION['strom']

auch

$_SESSION[strom]

verwenden, davon würde ich aber auch abraten, da hier nach Konstanten gesucht wird, die aber nicht definiert wurden.

Weiters kannst Du zwar Objekte in Strings verwenden, aber keine Methoden von Objektklassen.

d.h. Arrays, Objekte, Objektmethoden und Funktionen am besten immer ausserhalb des Strings verwenden, und bei Hashes für den Key IMMER Anführungszeichen verweden.

lg
mac
 
Das mit dem "." zwischen den Zeilen ist normalerweise eine übliche Vorgehensweise, um lange Strings miteinander zu verknüpfen (Punkt-Operator)
du könntest das in diesem Fall auch sein lassen:

PHP:
$sql = "UPDATE `gaerten` SET 
         `strom` = " . $_SESSION['strom'] . ", 
         `brunnen` = " . $_SESSION['brunnen'] . ", 
         `trink` = " . $_SESSION['trink'] . ", 
         `laubegr` = " . $db->real_escape_string($_SESSION['laubegr']) . ", 
         `gartengr` = " . $db->real_escape_string($_SESSION['gartengr']) . ", 
         `preis` = " . $db->real_escape_string($_SESSION['preis']) . ", 
         `frei` = true, 
         `kostenlos` = " . $_SESSION['kostenlos'] . ", 
         `aenderung` = true 
         WHERE `nummer` =" .  $_SESSION['nummer'] . ";";
 
Werbung:
Hallo mac2k8,

vielen Dank für Deine ausführlichen Antworten. Habe es ja schon so wie in Deinem besten Beispiel gemacht und es läuft.

Gruß thuemmy
 
Zurück
Oben