blackyK4 Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Hallöchen, folgenden Fehler bekomme ich, wenn ich Einträge über ein PHP-Formular in die Datenbank machen möchte: Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 58 Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091662620,1091666220,0) In Zeile 58 der mysql.php steht folgendes: 53 function execute_query($query) { 54 55 56 if ($this->debug) { print("Debug: QUERY = $query<br>"); }; 57 58 $this->query_handle = mysql_query($query, $this->db_handle); 59 $this->Row = 0; 60 if (!$this->query_handle) { 61 62 print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: $query"); 63 exit(); 64 65 } 66 67 } Ich glaube aber nicht, dass es ein Fehler in der mysql.php ist, denn auf einem anderen Server lief es ohne Probleme. Muss vielleicht wieder was in der php.ini geändert werden? Wahrscheinlich ist es nur ein kleiner dümmlicher Eintrag... :confused: Danke für Eure Hilfe.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Also, IMHO ist in $this->db_handle nicht das richtige Handle drin. Ist das richtig geschrieben? Hast du vorher nen Connect gemacht? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
burns Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Ich würde vermuten du hast für ein Feld einen falschen Datentyp angegeben und er kann deshalb die Werte nicht inserten. Deshalb der "Invalid SQL" (vermutlich ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Da fehlt eindeutig die Verbindung zur DB! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Ich würde vermuten du hast für ein Feld einen falschen Datentyp angegeben und er kann deshalb die Werte nicht inserten. Deshalb der "Invalid SQL" (vermutlich ) naja daran kanns eigentlich nicht liegen, da ja oben steht, dass er kein resource identifier bekommen hat! Also, IMHO ist in $this->db_handle nicht das richtige Handle drin. Ist das richtig geschrieben? Hast du vorher nen Connect gemacht? sowas in der Richtung müsste es sein. Vielleicht hast du den DB namen falsch geschrieben? ( case sensitive!) o.ä. Das Problem muss auf jeden fall schon vor diesem Query bestehen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 Ein connect wurde gemacht: class DB_HANDLER_CLASS { var $Host = ""; var $User = ""; var $Password = ""; var $Database = ""; var $query_handle = 0; var $db_handle = 0; var $Record = array(); var $Row = -1; var $debug = FALSE; function DB_HANDLER_CLASS($Host = "", $User = "", $Password = "", $Database = "") { $this->Host = $Host; $this->User = $User; $this->Password = $Password; $this->Database = $Database; } function connect() { if ($this->db_handle == 0) { $this->db_handle = mysql_connect($this->Host, $this->User, $this->Password); if (!$this->db_handle) { print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Connection failed."); exit(); } if (!mysql_select_db($this->Database, $this->db_handle)) { print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - cannot use Database $this->Database"); exit(); } } } Wie gesagt, ich habe alles nur auf einen anderen Server gepackt. Andere Tabellen in der Datenbank funktionieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Gebe bitte mal db_handle mit echo aus. Oder dein komplettes Objekt mit print_r() oder var_dump(). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 @Enrico: Wie lautet zur Ausgabe der genaue Source und an welche Stelle muss ich ihn einfügen? *keine Ahnung von SQL/PHP hat* Du hattest mir letztens schonmal geholfen.... (PHP-Formulare werden nicht mehr angezeigt). Kann es nicht wieder nur ein Eintrag in irgendeiner ini oder config.php sein? Am Source sollte es nicht liegen. Wie gesagt, der lief problemlos auf dem alten Server. Komisch ist auch, dass andere Tabellen in meiner Datenbank funktionieren. Sie sind zwar grafisch etwas anders aufgebaut, aber daran sollte es ja nun nicht liegen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Wie rufst du execute_query() auf? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 Das steht dazu in der mysql.php : function execute_query($query) { if ($this->debug) { print("Debug: QUERY = $query<br>"); }; $this->query_handle = mysql_query($query, $this->db_handle); $this->Row = 0; if (!$this->query_handle) { print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: $query"); exit(); } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Meine Frage ist, wie und wo du deine Funktion aufrufst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 Meinst Du das hier? Das steht in der kalender.phtml, also die Datei (Seite), die im Browser angezeigt wird, um Einträge zu ändern, hinzuzufügen, löschen... Hab den ganzen Block von connect bis disconnect kopiert. $hdb->connect(); for ($day = 0; $day < $monthdays[$month]; $day++) { $startdate = mktime(0,0,0,$month+1,$day+1,$year); $enddate = $startdate + 3600*24; $TPL[topic] = ""; $TPL[room] = ""; $TPL[starttime] = ""; $TPL[endtime] = ""; $TPL[eventid] = ""; $thatday = getdate($startdate); $TPL[day] = $day+1; $TPL[dayname] = $daynames[$thatday[wday]]; $TPL[currentday] = ($today[mday] == $day+1) && ($today[mon] == $month+1); $hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate"); if ($TPL[hasentry] = $hdb->num_rows() > 0) { while ($hdb->next_record()) { list($TPL[eventid],$TPL[topic],$TPL[room],$starttime, $endtime) = $hdb->Record; $TPL[room] = $option_room[$TPL[room]]; $TPL[starttime] = date("H\:i", $starttime)." Uhr"; $TPL[endtime] = date("H\:i", $endtime)." Uhr"; $TPL[insert_dayline] .= Cell2("dayline", $TPL); $TPL[day] = ""; $TPL[dayname] = ""; } } else { $TPL[insert_dayline] .= Cell2("dayline", $TPL); } } $hdb->disconnect(); Es gibt noch mehr von diesen execute_query()-Anweisungen, je nachdem, ob ich einen neuen Eintrag erstellen, einen vorhanden ändern oder löschen möchte. Ist aber alles im gleichen Format. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 vor und nach dem $hdb->execute_query() bitte mal folgendes Einfügen: echo "<pre>"; var_dump($hdb) echo"</pre><hr/>"; [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 Das mag er nun gar nicht. "Parse error: parse error, unexpected T_ECHO in /usr/local/htdocs/bewbadkalender.phtml on line 95" erscheint im Browser. Sieht so im phtml-File aus: echo "<pre>"; var_dump($hdb) echo"</pre><hr/>"; $hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate"); echo "<pre>"; var_dump($hdb) echo"</pre><hr/>";[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 laufen auf beiden servern die gleichen webserver? $TPL[topic] = ""; $TPL[room] = ""; $TPL[starttime] = ""; $TPL[endtime] = ""; $TPL[eventid] = ""; [/PHP] sowas z.b. dürfte nur auf einem Apache webserver gehen. Bei meinem Testserver würde er hier schon abbrechen, da es so heissen müsste: [PHP] $TPL['topic'] = ""; $TPL['room'] = ""; $TPL['starttime'] = ""; $TPL['endtime'] = ""; $TPL['eventid'] = ""; Hier ist ein Fehler: echo "<pre>"; var_dump($hdb) echo"</pre><hr/>"; $hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate"); echo "<pre>"; var_dump($hdb) echo"</pre><hr/>"; [/PHP] es muss so heissen: [PHP] echo "<pre>"; var_dump($hdb); // hier hat der ";" gefehlt echo"</pre><hr/>"; $hdb->execute_query("SELECT eventid,topic,room,startdate,enddate FROM bew_events WHERE startdate >= $startdate AND enddate <= $enddate ORDER BY startdate,enddate"); echo "<pre>"; var_dump($hdb); // hier hat der ";" gefehlt echo"</pre><hr/>"; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Sorry, habe nen ";" vergessen, das fehlt in der zweiten Zeile. @kills Unbekannte Konstanten werden als String behandelt. Also kommt dabei das gleiche raus, wie bei dir. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 @kills Unbekannte Konstanten werden als String behandelt. Also kommt dabei das gleiche raus, wie bei dir. aber nur auf dem apache .... Wenn du dieses script z.b. auf nem JanaWebserver ausführst, bricht der sofort ab, ohne zu casten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 So, die ersten beiden Abschnitte, die mir der Browser ausgibt: object(db_handler_class)(9) { ["Host"]=> string(14) "localhost:3306" ["User"]=> string(4) "root" ["Password"]=> string(0) "" ["Database"]=> string(3) "kkh" ["query_handle"]=> int(0) ["db_handle"]=> resource(1) of type (mysql link) ["Record"]=> array(0) { } ["Row"]=> int(-1) ["debug"]=> bool(false) } -------------------------------------------------------------------------------- object(db_handler_class)(9) { ["Host"]=> string(14) "localhost:3306" ["User"]=> string(4) "root" ["Password"]=> string(0) "" ["Database"]=> string(3) "kkh" ["query_handle"]=> resource(2) of type (mysql result) ["db_handle"]=> resource(1) of type (mysql link) ["Record"]=> array(0) { } ["Row"]=> int(0) ["debug"]=> bool(false) } Die Nachfolgenden sehen genauso aus, nur mit fortlaufenden Nummern. int(-1) steht nur im ersten Abschnitt. Bei allen anderen int(0). Und jetzt sagt auch noch, dass ihr damit was anfangen könnt. :confused: @ kills: Auf beiden Servern läuft Apache. Vielleicht Versionsunterschiede? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Mit der Verbindung scheint alles okay zu sein. Wie gesagt, ich habe alles nur auf einen anderen Server gepackt. Andere Tabellen in der Datenbank funktionieren. Hast du denn INSERT-Rechte für diese Tabelle? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 4. August 2004 Autor Teilen Geschrieben 4. August 2004 Ja, habe ich. Grad nochmal kontrolliert.... Welche Dateien sind denn relevant? z.B. config.php, mysql.php, php.ini.... Wo könnte sich da etwas geändert haben? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Okay. Langsam gehen mir die Ideen aus. Füge mal den Codeschnipsel mit dem var_dump() mal in die mysql.php ein (das "X" markiert die Stelle): if (!mysql_select_db($this->Database, $this->db_handle)) { print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - cannot use Database $this->Database"); X exit(); } [/PHP] Sieht die Ausgabe noch immer genauso aus? Besonders auf ['db_handle'] achten! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 4. August 2004 Teilen Geschrieben 4. August 2004 Pack mal hinter Zeile 58 folgendes: print("MYSQL_ERROR ".mysql_errno().": ".mysql_error()."<br>"); Das sollte einen Hinweis auf die Art des Fehlers geben. ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 5. August 2004 Teilen Geschrieben 5. August 2004 Pack den Vardump doch mal bitte in die execute_query()-Funktion:function execute_query($query) { if ($this->debug) { print("Debug: QUERY = $query<br>"); }; echo "<pre>"; var_dump($this); echo"</pre><hr/>"; $this->query_handle = mysql_query($query, $this->db_handle); $this->Row = 0; if (!$this->query_handle) { print("Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: $query"); exit(); } }[/PHP]Ich glaube nämlich noch immer, daß er nicht an $this->db_handle rankommt, schließlich läßt das die Fehlermeldung vermuten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
blackyK4 Geschrieben 5. August 2004 Autor Teilen Geschrieben 5. August 2004 Sieht die Ausgabe noch immer genauso aus? Besonders auf ['db_handle'] achten! In den ersten beiden Abschnitten: ["db_handle"]=> resource(1) of type (mysql link) Im dritten Abschnitt: ["db_handle"]=> resource(1) of type (Unknown) Anschliessend kommt wieder die Fehlermeldung: Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 63 Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO bew_events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091691960,1091691960,0) Bevor ich den Code in die mysql.php eingefügt habe, kamen nur diese Abschnitte (mehr als drei), wie gestern gepostet, aber nicht die Fehlermeldung. @ICQ: Hab die Code-Zeile dahinter gepackt. Jetzt kommt das: MYSQL_ERROR 0: Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 58 MYSQL_ERROR : Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO bew_events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091692440,1091692440,0) @kleiner Hobbes: Leider auch nichts anderes: object(db_handler_class)(9) { ["Host"]=> string(14) "localhost:3306" ["User"]=> string(4) "root" ["Password"]=> string(0) "" ["Database"]=> string(3) "kkh" ["query_handle"]=> int(0) ["db_handle"]=> resource(1) of type (mysql link) ["Record"]=> array(0) { } ["Row"]=> int(-1) ["debug"]=> bool(false) } -------------------------------------------------------------------------------- MYSQL_ERROR 0: object(db_handler_class)(9) { ["Host"]=> string(14) "localhost:3306" ["User"]=> string(4) "root" ["Password"]=> string(0) "" ["Database"]=> string(3) "kkh" ["query_handle"]=> int(0) ["db_handle"]=> resource(1) of type (Unknown) ["Record"]=> bool(false) ["Row"]=> int(1) ["debug"]=> bool(false) } -------------------------------------------------------------------------------- Warning: mysql_query(): 1 is not a valid MySQL-Link resource in /usr/local/htdocs/mysql.php on line 62 MYSQL_ERROR : Folgender Fehler ist aufgetreten: MYSQL_ERROR - Invalid SQL: INSERT INTO bew_events (topic,room,startdate,enddate,beamer) VALUES("test",0,1091692620,1091692620,0) :confused: *noch nie so ratlos war* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. August 2004 Teilen Geschrieben 5. August 2004 könntest du mal deine mysql.php zum download bereitstellen? es scheint so, als würde die connection zwischenzeitig geschlossen werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.