这就是我创建句柄的方式
$this->_handle = new SQLite3($this->_dbname);
这是我进行数据库查询(缩短)的方法:
$stmt = $this->_handle->prepare($sql);
// execute query
$result = $stmt->execute();
// get all results
while($row = $result->fetchArray(SQLITE3_ASSOC)){
$res[] = $row;
}
现在我想获取最后插入的ID。我这样试过:
public function last_insert_rowid()
{
$result = sqlite_last_insert_rowid($this->_handle);
var_dump($result);
echo '<pre>';
print_r($result);
echo '</pre>';
return $result;
}
我收到此错误:
警告:sqlite_last_insert_rowid()期望参数1为 资源,在...... 444行上给出的对象NULL
修改:这不起作用,因为我必须使用sqlite_open()
打开它。
我也试过这段代码:
function last_insert_rowid(){
global $db;
$sql = "SELECT last_insert_rowid();";
$result = $db->ExecuteQuery($sql);
var_dump($result);
return $result;
//return ($db->last_insert_rowid());
}
我收到以下错误消息:
NULL警告:SQLite3Stmt :: execute()[sqlite3stmt.execute]:无法执行 执行语句:约束失败..
错误指向此行$stmt->execute();
如何获取上次插入的ID?
答案 0 :(得分:1)
该函数有另一个名称lastInsertRowID
。
解决方案:
public function last_insert_rowid()
{
//$result = sqlite_last_insert_rowid($this->_handle);
$result = $this->_handle->lastInsertRowID();
return $result;
}
答案 1 :(得分:0)
在我看来,查询无法执行。我会仔细检查正在运行的查询。如NOT NULL
NULL
库存设为Unable to execute statement: constraint failed in