我正在尝试使用以下代码从表中获取最新的插入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。这可能吗?
答案 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();