2011-01-07 32 views
0

我想使用此代码表中获取最新的插入的ID:如何获得最后插入的ID - Zend的

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

但它总是返回“1”

什么想法?


更新:我刚刚发现指定者();,它检索从使用fetchall所有数据。问题是,我只需要ID。我当前的代码如下所示:

$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; 
} 

很显然,我已经得到了if ($column="id") {$myid[$brr] = $value;}一点毛病。 任何人都可以指向正确的方向吗?

另一种方法是从fetchAll中过滤ID。那可能吗?

+0

可能的重复http://stackoverflow.com/questions/1868769/zend-framework-how-to-retrieve-the -id-of-the-last-inserted-row? – 2011-01-07 10:44:26

+0

这不一样,因为我在插入新行 – Lemon 2011-01-13 10:01:57

+0

后没有使用它来进一步说明这一点,所以我需要获得已发布文章的ID(因此'public = 1'),所以我可以编写指向最近期的链接文章。 – Lemon 2011-01-13 10:07:43

回答

0

这听起来像是返回true而不是实际值。检查返回值的函数使用fetchall

1

认为你可以使用:

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

,难道你不想从SELECT查询得到最后的INSERT ID?

使用lastInsertId()或insert返回的值:$ id = $ db-> insert();

1

为什么您使用fetchAll()检索上次插入的ID? fetchAll()将返回一组结果(多个记录)作为对象(不是数组,但可以使用toArray()方法将其转换为数组)。但是,如果你想重用你已经有一个行集,你知道最后一个记录是行集中的第一条记录,你可以这样做:

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

如果你使用fetchRow(),它会返回单行,这样你就不必调用current()的结果:

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