2015-09-23 2 views
1

Я пытаюсь вставить новые данные в SQLite db и выбрать последний идентификатор, когда я выполняю инструкцию в браузере SQLite. Я вижу, что утверждение верное, и я получаю результат. Но когда я пытаюсь получить результат в моем PHP-скрипте, я получаю «null».PHP SQLite3 Вставить и выбрать последний идентификатор, не возвращающий результат

<?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 
+0

Вы проверили журналы ошибок? –

+0

может быть полезно? [SQLiteDatabase :: lastInsertRowid - возвращает значение строки из последней вставленной строки] (http://php.net/manual/en/function.sqlite-last-insert-rowid.php) –

+0

- SQLite не возвратил ошибок - Райан, я видел эту ссылку раньше, но, к сожалению, я не понял, как правильно использовать этот метод. – Yuval

ответ

0

Чтобы выполнить несколько операторов SQL, вы должны вызвать querySingle() или query() несколько раз.

В любом случае, самый простой способ получить последний вставленный rowid - позвонить по телефону $conn->lastInsertRowid().

Смежные вопросы