2013-01-24 31 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所示