Unleashed Geschrieben 17. Dezember 2008 Geschrieben 17. Dezember 2008 Hi, ich bin ziehmlich unerfahren mit php. Hab den Auftrag bekommen eine webseite (auf php basis gecoded) von einem auf den anderen webserver zu verschieben. hab es jetzt erstmla auf meine xampp gezogen. Mann muss dazu sagen, dass der server wo das alles liegt total alt ist. Apache 1.2 und mysql 4.1. So mein prob ist, das ich diesne fehler bekommen Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in \qualiweb\includes\database\DB_SichtClass.inc.php on line 64 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in \qualiweb\includes\database\DB_MenueClass.inc.php on line 68 wenn ich also bei der DB_SichtClass.inc.php reinschauhe bekomm und auf zeihel 64 schau seh ich dies. if ($cnt = mysql_num_rows($sql_result)) um das ganze bisschen überischtlicher zu machen post ich mal das ganze php skript.. <?php class DB_Sicht { /** * SichtObjekt * @var DB_Sicht */ var $DB_Sicht; /** * SichtId * @var int */ var $sicht_id; /** * SichtText * @var String */ var $sicht_text; /** * Objektparameter werden gesetzt * @param Array */ function DB_Sicht ($record = null) { $this->DB_Sicht = $record; $this->sicht_id = $record['$sicht_id']; $this->sicht_text = $record['$sicht_text']; } /** * Funktion zum Auslesen aller Objekte aus der Datenbank * @return DB_Sicht[] */ function selectAll() { $db = new Database(); $db->getConnection(); $statement = "select $sicht_id, $sicht_text from $qw_sicht order by $sicht_id"; $sql_result = mysql_query($statement); if ($cnt = mysql_num_rows($sql_result)) { for ($i = 0; $i < $cnt; $i++) { $rec = mysql_fetch_array ($sql_result); $Data[] = new DB_Sicht($rec); } } $db->closeDatabase(); return $Data; } /** * Funktion zur Speicherung in der Datenbank * @param String */ function save($sicht_text) { $db = new Database(); $db->getConnection(); $statement = "insert into qw_sicht (sicht_text) values (\"".$sicht_text."\")"; $sql_result = mysql_query ($statement); $db->closeDatabase(); } /** * Funktion zur Aktualisierung in der Datenbank * @param int * @param String */ function update($sicht_id, $sicht_text) { $db = new Database(); $db->getConnection(); $statement = "update qw_sicht set sicht_text=\"".$sicht_text."\" where sicht_id = \"".$sicht_id."\""; $sql_result = mysql_query ($statement); $db->closeDatabase(); } /** * Funktion zum Löschen aus der Datenbank * @param int */ function delete($id) { $db = new Database(); $db->getConnection(); $statement = "delete from qw_sicht where sicht_id=$id"; $sql_result = mysql_query ($statement); $db->closeDatabase(); } } // _DB_SichtClass ?> Vielleicht findet einer von euch profis den fehler. Danke schonmal. MfG Unleashed Zitieren
bytebrain Geschrieben 17. Dezember 2008 Geschrieben 17. Dezember 2008 Hallo. Lass dir mal das SQL-Query auf den Bildschirm ausgeben und führe dieses dann mal direkt auf der Datenbank aus. Dein PHP-Script bekommt nämlich kein Ergebnis von der Datenbank. Das hier $sql_result = mysql_query($statement); [/php] schlägt nämlich fehl. Mach vorher einfach mal ein "echo $statement;". Grüße, bytebrain Zitieren
Unleashed Geschrieben 17. Dezember 2008 Autor Geschrieben 17. Dezember 2008 danke für die schnell antwort. oke hab ich gemacht. jetzt hab ich dies dort stehen select , from order by Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\solve-it-intranet\docs\kompass\qualiweb\includes\database\DB_SichtClass.inc.php on line 66 sieht mir danach aus das er die statements nicht kennt. Lieg ich da richtig? Zitieren
robotto7831a Geschrieben 17. Dezember 2008 Geschrieben 17. Dezember 2008 select , from order by Wenn das das Statement ist was zur DB ist, dann wundert mich gar nichts. Das ist nichts halbes und nichts ganzes. Da fehlen ein paar entscheidene Inhalte. Frank Edit: Das wird wohl von folgender Zeile produziert. $statement = "select $sicht_id, $sicht_text from $qw_sicht order by $sicht_id"; [/code] Zitieren
Unleashed Geschrieben 17. Dezember 2008 Autor Geschrieben 17. Dezember 2008 Oke hab die $ wegelassen. Hab auch nochmal die Rechte auf der DB überprüft. aber jetzt kann ich nichts auswählen. wenn ich auch ein menu punkt klicke müsste er was anderes im main anzeigen. aber da kommt nichts. er zeigt immer noch die erste seite an. Zitieren
DevilDawn Geschrieben 17. Dezember 2008 Geschrieben 17. Dezember 2008 Hi, function DB_Sicht ($record = null) { $this->DB_Sicht = $record; $this->sicht_id = $record['$sicht_id']; $this->sicht_text = $record['$sicht_text']; } [/php] Hier wird die Klasse offensichtlich initialisiert, und hier kommen $sicht_* her. Wie du beim debuggen gesehen hast sind diese Variablen aber unbelegt. Vermutung: Die alte Webserver/PHP Kombo hat noch per register_globals Variablen direkt von der URL genommen und damit die Klasse initiiert, das passiert in der neuen Umgebung nicht mehr und daher sind die Werte leer. Zitieren
robotto7831a Geschrieben 17. Dezember 2008 Geschrieben 17. Dezember 2008 Welche PHP Version läuft auf dem alten und welche auf dem neuen Server? Frank Zitieren
Unleashed Geschrieben 18. Dezember 2008 Autor Geschrieben 18. Dezember 2008 auf dem alten läuft eine MIR unbekante Version. auf der neuem eine php5. soll ich es umstellen auf php4. Info: Skript ist 2004 Entstanden. Zitieren
robotto7831a Geschrieben 18. Dezember 2008 Geschrieben 18. Dezember 2008 auf der neuem eine php5. soll ich es umstellen auf php4. Das ist eine schnelle aber unschöne Lösung. Denn das Problem läuft nicht weg. Du solltest das Skript auf PHP5 anpassen. Frank Zitieren
bytebrain Geschrieben 18. Dezember 2008 Geschrieben 18. Dezember 2008 auf dem alten läuft eine MIR unbekante Version. [...] Auf der Konsole einfach mal php -v ausführen. Sieht dann so aus: me@linux-machine:~> php -v PHP 5.2.4 with Suhosin-Patch 0.9.6.2 (cli) (built: Sep 23 2007 14:12:53) Copyright (c) 1997-2007 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies me@linux-machine:~> Grüße, bytebrain Zitieren
Unleashed Geschrieben 18. Dezember 2008 Autor Geschrieben 18. Dezember 2008 oke. ja mach ich gleich mal. andere frage. ich versuch das gereade auf meiner localhost kiste zum laufen zu bringen. bekomm immer dieesen fehler. Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in viele sagen das ich was mit old-password machen soll. Frage nur wie mach ich das unter xampp. da ich ja kein unix system haben, sie aber alle nur erklären wie es unter unix geht. Zitieren
robotto7831a Geschrieben 18. Dezember 2008 Geschrieben 18. Dezember 2008 So geht es auch unter windows. 2. Alternatively, you can enable the "old-passwords" option on the MySQL Server. The options file is typically "my.ini" or "my.cnf" and is located in the MySQL Server data directory. Make sure there is a line in the file like this: PHP FAQ - MySQL Forge Wiki Frank Zitieren
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.