Probleme mit Php-Version auf T-online Server?
Roland
- php
2 Cheatah0 steffen3 Der Martin
2 dedlfix
0 ChrisB
Gumo!
Ein simples Php-Script zur Ausgabe von Datensätzen aus einer mysql-Datenbank hat bei diversen Webhostern funktioniert.
Nun muss ich ein solches script auf einem t-online Webspace hochladen und bekomme folgende Fehlermeldung:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in \... on line 262
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in \... on line 263
Hier mal die php-Zeilen, die ich verwende und die die Fehlermeldung verursachen:
$sql = "SELECT * FROM tabelle1";
$result = mysql_query($sql);
$reihe_tabelle = mysql_fetch_assoc( $result ); // Zeile 262
$totalRows_tabelle = mysql_num_rows($result); // Zeile 263
Liegt das an der php-Version auf dem T-online-Server dass der Syntax nicht verstanden wird oder was kann ich tun?
Hi,
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in \... on line 262
in Zeile 262 wird versucht auf ein MySQL-Resultat zu reagieren, welches nicht vorliegt. Der eigentliche Fehler passierte vorher.
$sql = "SELECT * FROM tabelle1";
$result = mysql_query($sql);
Dies führt zu keinem Ergebnis. Prüfe mysql_error(), prüfe ob tabelle1 an der angesprochenen Stelle der Datenbank existiert, prüfe ob Du überhaupt die richtige Stelle der Datenbank ansprichst.
Cheatah
Halllo,
also du bekommst kein korrektes result zurück. Da würde ich eher mal überprüfen ob die authentifizierung and den Host und der connect an die DB korrekt ist, sowie ob es auch tabelle1 gibt!
lg steffen
Hallo,
Ein simples Php-Script zur Ausgabe von Datensätzen aus einer mysql-Datenbank hat bei diversen Webhostern funktioniert.
und dass es nun nicht mehr "funktioniert", veranlasst dich nicht, die Meldungen mal zu lesen und zu überlegen, was sie wohl bedeuten müssen?
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in \... on line 262
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in \... on line 263$sql = "SELECT * FROM tabelle1";
$result = mysql_query($sql);
$reihe_tabelle = mysql_fetch_assoc( $result ); // Zeile 262
$totalRows_tabelle = mysql_num_rows($result); // Zeile 263
Also ist $result keine gültige mySQL-Ressource, sondern false - das ist die Art, wie mysql_query() dir sagt, dass der Aufruf fehlgeschlagen ist. Du hast in deinem Script keinerlei Abfragen von Fehlerbedingungen; ein böses Versäumnis.
Frage dich also: Was ist bei mysql_query() schiefgegangen? Oder noch besser: Frag mySQL danach. Und statte deine Scripts in Zukunft mit der Fähigkeit aus, solche Fehler zu erkennen und auf geeignete Weise darauf zu reagieren.
Liegt das an der php-Version auf dem T-online-Server dass der Syntax nicht verstanden wird oder was kann ich tun?
DIE Syntax.
Und nein, PHP kann nichts dafür, du hast im Moment ein SQL-Problem. Existiert die Tabelle, die du ansprechen willst? Ist die Verbindung zur Datenbank gültig? Dein Scriptauszug hat ja auch eine Vorgeschichte, in der unbemerkt schon Fehler aufgetreten sein können.
So long,
Martin
Hi!
Frage dich also: Was ist bei mysql_query() schiefgegangen? Oder noch besser: Frag mySQL danach. Und statte deine Scripts in Zukunft mit der Fähigkeit aus, solche Fehler zu erkennen und auf geeignete Weise darauf zu reagieren.
_Was_ schiefgelaufen ist, braucht man nur dann nachzuschauen, _wenn_ etwas schiefgelaufen ist. Ob etwas schiefgelaufen ist, braucht man jedoch nicht explizit abzufragen, das erfährt man über den Rückgabewert der mysql_*()-Funktionen. Den sollte man auswerten und nicht auf gutes Wetter hoffend einfach fortfahren.
Die Information des "was" geht übrigens keinen normalen Seitenbesucher etwas an. Er kann und soll mit dieser Information nichts anfangen/anstellen. Im Fehlerfall das Script einfach sterben zu lassen ist der einfachste aber auch unschönste Weg, der in der Regel weder dem Besucher noch dem Anbieter nützt (z.B. Besucher kann nicht bestellen, Anbieter macht kein Geschäft). Zu einem guten Fehlerkonzept gehört auch, dass man Reaktionen auf Fehlerfälle von beiden Seiten aus betrachtend konzipiert.
Lo!
Hi,
Ein simples Php-Script zur Ausgabe von Datensätzen aus einer mysql-Datenbank hat bei diversen Webhostern funktioniert.
Dann zieh daraus die Lehre, dass du deine Scripte in Zukunft nicht mehr ganz so „simpel“, was in diesem Falle eher naiv bedeutet, schreiben solltest.
was kann ich tun?
Debugging betreiben.
Hast du dich vor dem Fragen hier mal ansatzweise informiert, wie man das in so einem Falle sinnvoll macht?
MfG ChrisB