Mailinglisten-Archive |
Guten Morgen! :-) Endlich habe ich mich durchgerungen, meine Website von Grund auf neu zu programmieren. Gerade bin ich dabei, die Klasse mit den Datenbankfunktionen auf der Basis der MySQLi-Erweiterung zu bauen. Dabei ist nun folgendes Problem aufgetreten: Wenn ich auf meinem lokalen Entwicklungsserver versuche, einem Prepared Statement (mysqli_prepare) mit mysqli_stmt_bind_param Parameter zuzuweisen, bekomme ich ein leeres Ergebnis. Führe ich das Prepared Statement ohne Parameter aus, kriege ich alle Datensätze aus der Datenbank. Jetzt habe ich das Skript auf dem Live-Server ausprobiert. Dort tritt das Problem nicht auf. Die Prepared Statements funktionieren auch mit Parametern. (Detaildaten zu den beiden Server ganz am Ende dieser Mail!) Möglicher Hintergrund: Ich hatte einmal ein ähnliches Problem im März, als ich mit Hibernate (Java) experimentiert habe. Da war es allerdings so, daß SELECTs wunderbar funktioniert haben, INSERTS aber nur fehlerhaft. Nach fast einer ganzen Woche Recherche im Internet war ich damals darauf gestoßen, daß es einen Bug im MySQL-Server-RPM von Mandriva 2006, der vom mir lokal verwendeten Linux-Version, gibt (vgl. http://bugs.mysql.com/bug.php?id=14910). Die Lösung war, der Datenbankverbindung über J/Conenctor in Hibernate folgendes mitzugeben: <property name="connection.useServerPrepStmts">false</property> Meine Frage ist nun: Wie kann ich der Verbindung diese Option mitgeben, um zu testen, ob es wieder daran liegt? Mit mysqli_options scheint es nicht zu gehen? Wie müßte denn der Connection-String für mysqli_connect / mysqli_real_connect aussehen, wen ich TCP/IP verwenden würde, um den Parameter useServerPrepStmts mitgeben zu können? Ich habe leider kein Beispiel gefunden, wie von diesen Funktionen in diesem speziellen Fall die Übergabe erwartet wird. Was mich noch interessieren würde: 1. Wie kann ich mir eigentlich das fertig zusammengebaute SQL-Statement (= mit eingesetzten Parametern) sehen? Komme ich da überhaupt von PHP aus dran? Oder habe ich eine Chance, die Daten auf MySQL-Seite abzugreifen? 2. Ich suche bisher verzweifelt bei mysqli sowas wie "is_connected". Wie komme ich an diese Information, ob das mysqli-Objekt auch eine gültige Verbindung hält? Viele Grüße Lutz Hier dann noch die Angaben zu den Servern: LOKAL PHP 5.1.4 als Modul MySQL - 4.1.12 * Protokoll-Version: 10 * Server: Localhost via UNIX socket * MySQL Client-Version: 5.0.21 * Verwendete php Erweiterungen: mysqli character_set_client (utf8) character_set_connection (utf8) character_set_database (utf8) character_set_results (utf8) character_set_server (latin1) character_set_system (utf8) character_sets_dir (/usr/share/mysql/charsets/) ONLINE PHP 5.1.4 als CGI MySQL - 4.1.14-log * Protokoll-Version: 10 * Server: Localhost via UNIX socket * MySQL Client-Version: 4.1.14 * Verwendete php Erweiterungen: mysqli character_set_client (utf8) character_set_connection (utf8) character_set_database (utf8) character_set_results (utf8) character_set_server (latin1) character_set_system (utf8) character_sets_dir (/usr/share/mysql/charsets/)
php::bar PHP Wiki - Listenarchive