我试图插入新数据到SQLite数据库并选择最后一个ID,当我在SQLite浏览器中执行语句时,我看到该语句是正确的,我得到了结果。但是当我试图在PHP脚本中获得结果时,我得到"null"。
<?php
class SQLiteDb extends SQLite3{
function __construct(){
$this->open('chat.db');
$this->exec('CREATE TABLE IF NOT EXISTS "users" (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`username` VARCHAR(30) NOT NULL,
`status` VARCHAR(15) NOT NULL,
`date_created` VARCHAR(40) NOT NULL
)');
}
}
$conn = new SQLiteDb();
$sql = "INSERT INTO users (username, status, date_created) VALUES ('test','active','23/09/2015 14:44'); SELECT last_insert_rowid() AS last_id;"
$lastId = $conn->querySingle($sql);
var_dump($lastId);//returns null
$lastId = $conn->query($sql);
var_dump($lastId); //returns object(SQLite3Result)[3]
var_dump($lastId->fetchArray(SQLITE3_ASSOC)); //returns false
要执行多个SQL语句,您必须多次调用querySingle()
或query()
。
无论如何,获得最后插入的rowid
的最简单方法是调用$conn->lastInsertRowid()
。