phpbar.de logo

Mailinglisten-Archive

[php] Problem mysqli_prepare und mysqli_stmt_bind_param

[php] Problem mysqli_prepare und mysqli_stmt_bind_param

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Die Jun 6 10:39:47 CEST 2006


Hallo Andreas,

vielen Dank für Deine Antwort! :-)

Andreas Ahlenstorf schrieb:
>
> Am 06.06.2006 um 09:58 schrieb Lutz Zetzsche:
> Wenn Hibernate JDBC verwendet, sorgt deine Konfigurationseinstellung
> dafür, dass die Prepared Statements emuliert werden (kann sein, muss
> aber nicht, weil ich eigentlich von Java 0 Ahnung habe). mysqli
> hatte, als ich es das letzte Mal benutzt habe, keine
> Emulationsfunktionen. pdo_mysql hat das dagegen seit PHP 5.1.3
> (PDO::ATTR_EMULATE_PREPARES muss auf true gesetzt werden).

Das klingt sehr interessant! Werde ich mir merken. Der Haken ist
allerdings, daß die PDO-Erweiterung auf dem Online-Server nicht
installiert ist. Da ich ohnehin nur MySQL verwenden werden, habe ich mich
dann für die MySQLi-Erweiterung entschieden.

Ich habe mir auch gedacht, daß ich mit MySQLi mehr Möglichkeiten als mit
PDO haben werde, wenn ich ohnehin nur eine MySQL-Datenbank verwenden
werde. Aber vielleicht ist das auch nur ein Irrglaube, und bei PDO +
MySQL-Treiber gibt es keine Einschränkungen im Vergleich zu MySQLi.
(Vielleicht kann das jemand aufklären? :-))


>> 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?
>
> Das wird von MySQL gemacht, ergo kommst du da nicht wirklich dran
> (ein Grund, warum ich PDO mit Named Parameters benutze, ich kann
> dieses Fragezeichen-Gewusel nicht haben).

Hm, schade. Damit läuft also irgendwo etwas schief, ohne daß ich an die
Stelle des Problems vordringen kann...


>> 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?
>
> Kriegst du nicht nur ein Objekt, wenn die Verbindung vorhanden ist?
> Ergo kein Objekt wenn keine Verbindung?

Wenn Du mysqli_connect verwendest, wird sowohl das mysqli-Objekt erstellt,
als auch die Verbindung hergestellt. Verwendest Du mysqli_real_connect,
dann mußt Du zunächst mit mysqli_init das mysqli-Objekt instantiieren und
kannst dann mit mysqli_real_connect die Verbindung herstellen. Wenn Du
dann am Ende mit mysqli_close die Verbindung schließt, ist bleibt das
Objekt aber erhalten!

Im Augenblick arbeite ich also implizit, d.h. alles, was ich mit dem
Objekt mache, wird in einen try/catch-Block gepackt. Tritt ein Fehler auf,
fange ich die Exception ab und behandele sie. :-)

Vielleicht fehlt ja auch dieses "is_connected", weil man es so machen
kann. Obwohl ich es schon schön fände, abfragen zu können, ob eine gültige
Verbindung exitiert. ;-)


Viele Grüße

Lutz


php::bar PHP Wiki   -   Listenarchive