PHP - Parse error: syntax error, unexpected T_STRING -Hilfe

Ich habe für meine Allianz eines Browserpiels ein Adel-Reservierungs-Planer gemacht, welche bis auf 10 Zeile PHP nicht funktioniert. Diese Zeile sind die WICHTIGSTEN :frowning:

Könnt ihr mir helfen?

b[/b] Bei den Zeile soll das Script, die eingegebenen Daten in die DAtenbank adden. Wo ist der Fehler?

global $x;
global $y;
global $kontinent;
global $punkte;
global $gehört;
global $erobert;
$x = mysql_real_escape_string($_POST['x_koord']);
$x=htmlspecialchars($x);
$y = mysql_real_escape_string($_POST['y_koord']);
$y=htmlspecialchars($y);
$kontinent = mysql_real_escape_string($_POST['kontinent']);
$kontinent=htmlspecialchars($kontinent);
$punkte = mysql_real_escape_string($_POST['punkte']);
$punkte=htmlspecialchars($punkte);
$gehört = mysql_real_escape_string($_POST['gehört']);
$gehört=htmlspecialchars($gehört);
$erobert = mysql_real_escape_string($_POST['erobert']);
$erobert=htmlspecialchars($erobert);
[b]$sql = "INSERT burgen (`X`, `Y`, `Kontinent`, `Punkte`, `Gehört`, `Erobert_von`) VALUES ('$x','$y','$kontinent','$punkte', '$gehört', '$erobert')";[/b]
mysql_query($sql) or die mysqlerror();
echo'Eintragen erfolgreich.';

b[/b] Hier soll er einen User adden.

global $username;
global $userpass;
$username = mysql_real_escape_string($_POST['username']);
$username=htmlspecialchars($username);
$userpass = mysql_real_escape_string($_POST['userpass']);
$userpass=htmlspecialchars($userpass);
[b]$eintrag= "INSERT  `User` ( `Name` , `Passwort`) VALUES ('$username', '$userpass')";[/b]
mysql_query($eintrag) or die mysqlerror();
echo' 
User wurde erstellt.
'; // User erstellen

b[/b] Hier soll er einen User löschen.

global $username;
$username = mysql_real_escape_string($_POST['username']);
$username=htmlspecialchars($username);
[b]$eintrag= $loeschen = "DELETE FROM User WHERE Name = '$username'";[/b]
mysql_query($eintrag) or die mysqlerror();
echo' 
Eintrag gelöscht.
'; // Eintrag löschen

b[/b] Hier soll er einen Eintrag löschen.

global $x_koord;
global $y_koord;
$x_koord = mysql_real_escape_string($_POST['x_koord']);
$x_koord=htmlspecialchars($x_koord);
$y_koord = mysql_real_escape_string($_POST['y_koord']);
$y_koord=htmlspecialchars($y_koord);
[b]$eintrag= 'DELETE FROM burgen WHERE X = '.$x_koord.' AND Y = '.$y_koord.'';[/b]
mysql_query($eintrag) or die mysqlerror();
echo' 
Eintrag gelöscht.
'; // Eintrag löschen

Was habe ich falsch gemacht??
Freue mich auf eure Antworten.

MFG Sebsatian

EDIT: Ich habe die Zeile, die nicht funktioniert FETT makiert.

die erwartet Klammern um das Argument.
mysqlerror schreibt sich mysql_error.

Und Daten bereits beim Eintragen mit htmlspecialchars zu behandeln, ist in den allermeisten Fällen nicht sinnvoll. Das macht man besser bei der Ausgabe.

achso ok.

ich teste das dann mal.

EDIT: Es geht immer noch nicht.

Er mekert immer an den Zeilen $eintrag="insert".......

Also bei mir gibt’s keinen parse error mehr, wenn ich die Sache mit dem die bereinige.

In welcher Kodierung speicherst du deine Scripte ab? Evtl. macht das ö im Variablennamen $gehört Probleme. Sowas sollte man möglichst auch vermeiden, in diesem Falle eher $gehoert nutzen.

also codierung???

ich peicher das als .php :slight_smile:

ich prob das dann aus.

Vielleicht kann mir ja jemand auch sagen, was Parse error: syntax error, unexpected T_STRING heißt.

vielleicht weiß ich dann ja was falsch ist.

Der Parser zerlegt ein Script in sog. Tokens, also einzelne definierte Bestandteile - wie bspw. Funktionsnamen, Sprachkonstrukte, Variablen, Textliterale, etc.

unexpected T_STRING bedeutet jetzt nur, dass der Parser auf ein Token vom Typ STRING gestossen ist, an einer Stelle, wo er es nicht “erwartet” hat, wo es deshalb einen Syntaxfehler darstellt.

Hast du denn erst mal probiert, ob nach umbenennen der Variablen $gelöst das Problem weiterhin besteht?

nein noch nicht.

aber in einigen beispielen, gibt es das $gehört doch nicht !?!

Da geht das dann leider auch net :frowning:

Alle deine Beispiele bringen bei mir keinen parse error mehr, sobald ich das zuerst genannte Problem beseitige.

ich schreibe dann so in 1 1/2 Stunden zurück obs geht oder net.

Aber danke für deine Hilfe :slight_smile:

So:

Es geht trotzdem net :frowning:

Er mekert immer in Zeile 42 also mysql_query($eintrag)

Das heisst?

Was hast du gemacht, wie sieht dein aktueller Code aus? Ist die Meldung immer noch die gleiche?

Meldung immer die gleiche.

Ich habe etwas rumprobiert:

global $username;
global $userpass;
$username = mysql_real_escape_string($_POST['username']);
$username=htmlspecialchars($username);
$userpass = mysql_real_escape_string($_POST['userpass']);
$userpass=htmlspecialchars($userpass);
$abfrage = "INSERT INTO User (Name,Passwort) VALUES ('$username','$userpass')";
mysql_query($abfrage); or die 
mysql_error();

Er mekert wie gesagt an mysql_query($eintrag)

Das $gehört habe ich zu $gehoert und das mysqlerror() zu mysql_error() gemacht.

Du meinst, das es bei dir geht. In wie fern? Hast du eine DB angelegt, um es zu testen?

[quote=“supersites”]mysql_query($abfrage); or die mysql_error(); [/quote]
Das ist ja immer noch der gleiche Quark wie vorher.

Was schrieb ich denn bezüglich “die”, im ersten Satz meiner ersten Antwort?
Du musst schon aufmerksam lesen!

Nachdem ich den angesprochenen Fehler beseitigt habe, kommt bei mir kein parse error mehr.
Dass der Rest natürlich trotzdem nicht funktioniert ohne Datenbank etc., sollte logisch sein. Aber zunächst mal ging es ja um den parse error, und der ist weg, sobald man meine erste Antwort mal aufmerksam liest!

[quote=“chrisb”]die erwartet Klammern um das Argument.
mysqlerror schreibt sich mysql_error.

Und Daten bereits beim Eintragen mit htmlspecialchars zu behandeln, ist in den allermeisten Fällen nicht sinnvoll. Das macht man besser bei der Ausgabe.[/quote]

Das habe ich doch gemacht oder?

Ist das bearbeiten mit specialchars wirklich so schlimm?

Wer/Was??

EDIT: mit die meinst du wahrscheinlich or die ();

ich habe das geändert:

global $username;
global $userpass;
$username = mysql_real_escape_string($_POST['username']);
$username=htmlspecialchars($username);
$userpass = mysql_real_escape_string($_POST['userpass']);
$userpass=htmlspecialchars($userpass);
$abfrage = "INSERT INTO User (Name,Passwort) VALUES ('$username','$userpass')";
mysql_query($abfrage) or die (mysql_error());

der macht aber immernoch nen parse error auf der zeile von mysql_query() or die ();

Ich könnte dir auch die Log-in daten für die DB-Accont geben und das Script und du testet das, wenn du nichts dagegen hast.

Ich schicke es dir per PN.

:=)

[quote=“supersites”]ich habe das geändert:

global $username;
global $userpass;
$username = mysql_real_escape_string($_POST['username']);
$username=htmlspecialchars($username);
$userpass = mysql_real_escape_string($_POST['userpass']);
$userpass=htmlspecialchars($userpass);
$abfrage = "INSERT INTO User (Name,Passwort) VALUES ('$username','$userpass')";
mysql_query($abfrage) or die (mysql_error());

der macht aber immernoch nen parse error auf der zeile von mysql_query() or die ();[/quote]
Sorry, in dem gezeigten ist definitiv kein parse error mehr drin, wenn man das so per Copy&Paste übernimmt.

Wenn bei dir doch einer erscheint, dann muss das an was anderem liegen.
Entweder änderst du an der falschen Datei, und testest damit immer noch den alten Code (bitte wirklich überprüfen, sowas kommt vor); oder es sind irgendwelche nicht sichtbaren Sonderzeichen drin, die man hier im Forum nicht erkennen kann, die den Parser aber stören.

hmmmm.
eigentlich habe ich nichts anders als du es mir gesagt hast.

Vielleicht ist an dem eintrag $eintraf="Insert ..... (...) Values (...)";
etwas falsch?

Nein, die Zeile ist aus PHP-Sicht erst mal korrekt - eine Stringwertzuweisung, die mit doppelten Anführungszeichen begonnen und abgeschlossen wird.

so ich habe es nochmal ausprobiert und es geht !!!

So danke an Chrisb und alle andern. :=)