如何获得最后插入的id - zend

时间:2011-01-07 10:17:14

标签: sql zend-framework

我正在尝试使用以下代码从表中获取最新的插入ID:

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

但它总是返回“1”

任何想法?


更新:我刚刚发现了toArray();,它从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。这可能吗?

4 个答案:

答案 0 :(得分:1)

认为你可以使用:

$id = $tbl->lastInsertId();

答案 1 :(得分: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;

答案 2 :(得分:0)

听起来它回归真实而非实际价值。检查函数fetchAll的返回值

答案 3 :(得分:0)

你是不是想从SELECT查询中获取最后一个INSERT id?

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