Veröffentlicht 4. August 200421 j 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....
4. August 200421 j Also, IMHO ist in $this->db_handle nicht das richtige Handle drin. Ist das richtig geschrieben? Hast du vorher nen Connect gemacht?
4. August 200421 j 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 )
4. August 200421 j 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
4. August 200421 j 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.
4. August 200421 j Gebe bitte mal db_handle mit echo aus. Oder dein komplettes Objekt mit print_r() oder var_dump().
4. August 200421 j @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.
4. August 200421 j 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(); } }
4. August 200421 j 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.
4. August 200421 j vor und nach dem $hdb->execute_query() bitte mal folgendes Einfügen: echo "<pre>"; var_dump($hdb) echo"</pre><hr/>"; [/PHP]
4. August 200421 j 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]
4. August 200421 j 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/>";
4. August 200421 j 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.
4. August 200421 j @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.
4. August 200421 j 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?
4. August 200421 j 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?
4. August 200421 j 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?
4. August 200421 j 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!
4. August 200421 j 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
5. August 200421 j 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
5. August 200421 j 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*
5. August 200421 j könntest du mal deine mysql.php zum download bereitstellen? es scheint so, als würde die connection zwischenzeitig geschlossen werden.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.