2011-01-07 15 views
0

Ich versuche neuesten eingesetzten ID aus einer Tabelle mit diesem Code zu erhalten:wie zuletzt eingefügte ID zu bekommen - zend

$id = $tbl->fetchAll (array('public=1'), 'id desc'); 

aber es ist immer „1“

Ideen Rückkehr?


Update: Ich habe toArray gerade entdeckt() ;, die alle Daten von fetchAll abruft. Das Problem ist, ich brauche nur die ID. Meine aktuellen Code sieht wie folgt aus:

$rowsetArray = $id->toArray(); 
$rowCount = 1; 

foreach ($rowsetArray as $rowArray) { 
    foreach ($rowArray as $column => $value) { 
     if ($column="id") {$myid[$brr] = $value;} 
     //echo"\n$myid[$brr]"; 
    } 
    ++$rowCount; 
    ++$brr; 
} 

Offensichtlich, ich habe die if ($column="id") {$myid[$brr] = $value;} Sache falsch. Kann mir jemand in die richtige Richtung zeigen?

Eine Alternative wäre, IDs von fetchAll zu filtern. Ist das möglich?

+0

vielleicht ein Duplikat http://stackoverflow.com/questions/1868769/zend-framework-how-to-retrieve-the -die-letzte-eingefügte-Zeile? –

+0

es ist nicht das gleiche, weil ich es nicht nach dem Einfügen neuer Zeile verwenden – Lemon

+0

, um dies weiter zu klären, muss ich IDs der Artikel, die veröffentlicht werden (daher 'public = 1'), damit ich Links zu den neuesten schreiben kann Artikel. – Lemon

Antwort

0

Es klingt, als ob es wahr und nicht den tatsächlichen Wert zurückgibt. Überprüfen Sie den Rückgabewert für die Funktion fetchAll

+0

nach http://php.net/manual/en/pdostatement.fetchall.php, FetchAll sollte ein Array zurückgeben .. vielleicht bekomme ich etwas falsch – Lemon

1

Sie denken können:

$id = $tbl->lastInsertId(); 
+0

Es gibt undefined Funktionsfehler, wahrscheinlich, weil ich es nicht verwende nach dem Einfügen. – Lemon

0

nicht Versuchst du letzte INSERT-ID von SELECT-Abfrage zu bekommen?

Verwenden Sie lastInsertId() oder den von insert zurückgegebenen Wert: $ id = $ db-> insert();

1

Warum verwenden Sie fetchAll(), um die zuletzt eingefügte ID abzurufen? fetchAll() wird ein Rowset von Ergebnissen (mehrere Datensätze) als ein Objekt zurückgeben (kein Array, aber kann mit der Methode toArray() in ein Array konvertiert werden). Allerdings, wenn Sie versuchen, eine rowset wieder zu verwenden Sie bereits haben, und Sie wissen, der letzte Datensatz der erste Datensatz im Rowset ist, können Sie dies tun:

$select = $table->select() 
    ->where('public = 1') 
    ->order('id DESC'); 
$rows = $table->fetchAll($select); 
$firstRow = $rows->current(); 
$lastId = $firstRow->id; 

Wenn Sie fetchRow() verwenden, wäre es zurückgeben eine einzelne Zeile, so würden Sie nicht current() auf das Ergebnis nennen müssen:

$select = $table->select() 
    ->where('public = 1') 
    ->order('id DESC'); 
$row = $table->fetchRow($select); 
$lastId = $row->id; 
Verwandte Themen