2009-04-03 22 views

Antwort

2

Nicht getestet, aber ich glaube, dass die Abfrage als ein assoziatives Array zurückgegeben wird (wo der Spaltenname der Schlüssel ist), und so können Sie den ersten Datensatz durchlaufen und die Spaltennamen, z.

$sql = 'Select * From Test1,Test2'; 

$result = $db->fetchAll($sql, 2); 

foreach ($result[0] as $key => $value) { 
echo $key; 
... 
} 
+0

aber nicht klug $ result [0] wird damit 1-Daten in Zeile wenn nicht haben, es wiill Fehler: < –

+0

i einfügen wird und für diese löschen? –

+0

Es wäre teuer und ineffizient, eine Dummy-Zeile für diesen Zweck zu erstellen (3 Abfragen). Sie sollten also die Anzahl der zurückgegebenen Zeilen testen. Wenn sie null ist, verwenden Sie eine der Metato- Techniken, die Till beschreibt. Oder noch besser: Verwenden Sie nicht 'Auswählen *', da dies keine optimale Vorgehensweise ist. finde im Voraus nur die Feldnamen heraus (z. B. mit der Technik von Till) und verwende diese dann, um deine Datenabfragen zu erstellen. –

1

könnten Sie auch $db->describeTable('Test1') ausgeben usw. vor oder nach der Abfrage, die Sie mit allen Meta-Informationen zur Verfügung stellen würde, die Sie benötigen. Diese Abfrage ist jedoch ziemlich teuer. Stellen Sie daher sicher, dass die Antwort zwischengespeichert wird.

Auch wenn Sie ein Modell verwenden, das Zend_Db_Table_Abstract erweitert, dann sollten Sie alle diese Informationen bereits haben. In diesem Fall müssen Sie nur auf die geschützte Eigenschaft $_metadata zugreifen.

HTH