2013-01-24 32 views
1

这是我创造我把手sqlite3的和last_insert_rowid

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

我得到这个错误:

Warning: sqlite_last_insert_rowid() expects parameter 1 to be resource, object given in ... on line 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 Warning: SQLite3Stmt::execute() [sqlite3stmt.execute]: Unable to execute statement: constraint failed in ..

错误指向此行$stmt->execute();

如何让我的最后插入ID?

回答

1

该函数有另一个名字lastInsertRowID。 解决方案:

public function last_insert_rowid() 
{ 
    //$result = sqlite_last_insert_rowid($this->_handle); 
    $result = $this->_handle->lastInsertRowID(); 

    return $result; 
} 
0

它在我看来像查询失败执行。我会仔细检查正在运行的查询。也许你正在设置一个NOT NULL库仑到NULL,如Unable to execute statement: constraint failed in所示