【问题标题】:SQLite3 and last_insert_rowidSQLite3 和 last_insert_rowid
【发布时间】:2013-01-24 15:11:04
【问题描述】:

这就是我创建句柄的方式

$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-&gt;execute();

如何获取我最后插入的 ID?

【问题讨论】:

    标签: php sqlite lastinsertid last-insert-id


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在我看来查询执行失败。我会仔细检查正在运行的查询。也许您正在将NOT NULL 库设置为NULL,如Unable to execute statement: constraint failed in 所示

      【讨论】:

        猜你喜欢
        • 2015-10-11
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多