Fehlermeldung bei Ausgabe von Datensätzen
Onkel Hans
- php
0 Cheatah0 Vinzenz Mai
Moin!
Ich versuche, mit einem einfachen Skript ALLE Datensätze aus einer mysql-Datenbank-Tabelle auszugeben.
Dabei kommt die Fehlermeldung "Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in /kunden/151444_1040/webseiten/web01/private/test002/datenausgabe.php on line 40"
Die Zeile 40 ist jene Zeile, in der die ersten Daten ausgegeben werden, also das "echo " <td>".$datensatzausgabe->007_vorname."</td>\n";"
Hier der relevante Teil:
<?php
$db_verbindung=new MySQLi("mysql5.naehring.at","USERNAME","PASSWORT","USERNAME");
if(mysqli_connect_errno())
{
echo "<p>Die Datenbank konnte nicht erreicht werden. Folgender Fehler trat auf: <strong>".mysqli_connect_errno()." : ".mysqli_connect_error()."</strong>\n";
}
else
{
$db_verbindung->set_charset("utf8");
$abfrage='SELECT `007_vorname`, `007_familienname`, `007_ort` FROM `007_test`';
$ergebnis=$db_verbindung->query($abfrage);
echo"<p>Es wurden ".$ergebnis->num_rows." Datensätze gefunden.</p>\n";
echo " <tr>\n";
echo " <th>Vorname</th>\n";
echo " <th>Familienname</th>\n";
echo " <th>Ort</th>\n";
echo " </tr>\n";
while($datensatzausgabe=$ergebnis->fetch_object())
{
echo " <tr>\n";
echo " <td>".$datensatzausgabe->007_vorname."</td>\n";
echo " <td>".$datensatzausgabe->007_familienname."</td>\n";
echo " <td>".$datensatzausgabe->007_ort."</td>\n";
echo " </tr>\n";
}
$ergebnis->close();
$db_verbindung->close();
}
?>
Ist der Name der Tabellenspalten das Problem? Ich habe nirgendwo gelesen, dass die Namen der SQL-Tabellen nicht mit Zahlen beginnen dürfen.
Ich habe die entsprechenden Zeilen auch schon in allen möglichen Variationen, so wie in der Fehlermeldung vorgeschlagen, mit { verändert. Ich bekomme in keiner Variation eine Datenausgabe.
Meine Frage: Was an dem Code ist falsch?
Danke!
Onkel Hans
Hi,
Ist der Name der Tabellenspalten das Problem?
nein, der Name der Objekt-Member.
Ich habe nirgendwo gelesen, dass die Namen der SQL-Tabellen nicht mit Zahlen beginnen dürfen.
Die von Dir genannte Zeile ist Teil eines PHP-Codes, die Fehlermeldung stammt vom PHP-Parser. SQL-Regelungen sind nicht von Belang. Selbst wenn es Pflicht wäre, dass die Namen von Datenbank-Tabellen und -Spalten ausschließlich aus Ziffern bestehen, wäre der PHP-Code noch immer falsch.
Meine Frage: Was an dem Code ist falsch?
Die "0". Entweder verzichtest Du darauf, die automatische Generierung von Objekt-Membern aus Bezeichnern der Datenbank zu verwenden, oder Du benennst die Spalten des Result-Sets um.
Cheatah
Hallo Cheatah!
Danke für die Antwort!
»» Meine Frage: Was an dem Code ist falsch?
Die "0". Entweder verzichtest Du darauf, die automatische Generierung von Objekt-Membern aus Bezeichnern der Datenbank zu verwenden, oder Du benennst die Spalten des Result-Sets um.
Das verstehe ich nicht ganz. Wenn ich Dich richtig verstanden habe, ist es OK, eine Tabelle mit dem Namen "007_test" zuhaben, in der es eine Spalte mit dem Namen "007_vorname" gibt. Soweit richtig?
Aber wenn ich die Tabelle jetzt auslese, dann muß ich ja die Tabelle selbst, als auch die Spalten so nennen, wie sie eben in Wirklichkeit heißen, wie soll ich also das "echo " <td>".$datensatzausgabe->007_vorname."</td>\n";" umschreiben?
LG
Onkel Hans
Hi!
Das verstehe ich nicht ganz.
http://de.php.net/manual/de/language.variables.basics.php
off:PP
Hallo,
Dabei kommt die Fehlermeldung "Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in /kunden/151444_1040/webseiten/web01/private/test002/datenausgabe.php on line 40"
Die Zeile 40 ist jene Zeile, in der die ersten Daten ausgegeben werden, also das "echo " <td>".$datensatzausgabe->007_vorname."</td>\n";"
echo " <td>".$datensatzausgabe->007_vorname."</td>\n";
Ist der Name der Tabellenspalten das Problem?
Ja.
Ich habe nirgendwo gelesen, dass die Namen der SQL-Tabellen nicht mit Zahlen beginnen dürfen.
sie dürfen ja auch. Du hast kein SQL-Problem, Du hast ein PHP-Problem. Du könntest allerdings dieses PHP-Problem mit SQL lösen :-)
Nur PHP hat ein Problem genau in der Form, wie Du darauf zugreifen willst, siehe dazu auch folgenden Benutzerkommentar im PHP-Handbuch, Abschnitt "Objekte", weil der Name Deiner Spalte die Regeln für Variablennamen in PHP verletzt.
Entweder greifst Du über einen anderen Weg auf die Spalten Deines Datensatzes zu, einem Weg, der nicht versucht, Variablen (bzw. Eigenschaften) zu erzeugen oder Du gibst Deinen Spalten in Deinem Statement Aliasnamen, die den Regeln für PHP-Variablennamen entsprechen.
Freundliche Grüße
Vinzenz