Fail! Zend Db: Ausgabe eines Update Query

Heute gibt es mal einen Fail!

Vorneweg: das Zend Framework (Version 1.10) wird hier “lose” benutzt, d.h. ohne Bootstrap. (Evtl. kann man da den Query loggen, aber kA)

Die simple Ausgabe eines Update Query zu Debug Zwecken ist mit dem Zend Db Packet anscheinend nicht möglich.

Man konstruiert den Query:

$this->db->update($this->table, $data, 'id = '.(int)$this->data['id']);

Irgendwas geht schief und man wüßte gerne was, also einfach mal den Query ausgeben und schauen was da los ist.

Eine __toString wie etwa bei den Select Konstrukten gibt es dort nicht.

Über den Profiler bekommt man auch nur den Query mit Platzhaltern und die Parameter Liste, aber keinen zusammengesetzten Query.
Bereits bei über 10 Parameter wird das dann schon wieder unübersichtlich und ist somit auch nutzlos.

Probiert man es über quoteInto kommt auch nur Murks raus:
Da wird jeder Platzhalter mit der kompleten Parameterliste ersetzt.

$this->db->getProfiler()->setEnabled(true);
$n = $this->dbn->update($this->table, $ins, 'offline_id = '.(int)$this->id);
//gibt den query mit platzhaltern bei den Values aus
$query = $this->db->getProfiler()->getLastQueryProfile()->getQuery();
echo $query;
//gibt die Parameter Liste aus
$queryParams = $this->db->getProfiler()->getLastQueryProfile()->getQueryParams();
print_r($queryParams);
//setzt die komplette Parameterliste in jeden Platzhalter :(
echo $this->db->quoteInto($query, $queryParams)
$this->db->getProfiler()->setEnabled(false);

Das ist schon eher schwach, würde ich mal behaupten.
Hat das schonmal jemand geschafft?
Würde mich interessieren: wie?

One Reply to “Fail! Zend Db: Ausgabe eines Update Query”

  1. Ich habe mich ebenfalls schon sehr oft über dieses Problem geärgert. Gerade eben wieder ;)

    Ein riesen FAIL!

    Weißt du, ob es dazu mittlerweile ein feature request oder ähnliches gibt?

Comments are closed.