首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LastInsertId返回0

LastInsertId返回0
EN

Stack Overflow用户
提问于 2017-12-22 09:22:08
回答 1查看 46关注 0票数 0

当我试图向数据库中添加INSERT以将数据推入数据库时,它没有添加任何内容。注意到lastInsertId不起作用。还给我0。

有趣的是,几天前我遇到了这个问题,并通过删除表并添加一个新的表来修复它,但这一次不起作用。我在ID上使用自动增量。

我知道我可以使用SELECT检索信息,所以我知道我得到了到数据库的连接。

我就是这样建立我的查询的:

代码语言:javascript
复制
public function tools(){
  $filename = $_POST['namefile'];
    $this->query("SELECT * FROM page_context WHERE file_name='kalm'");
    $rows = $this->resultSet();

    if(isset($_POST["sendFile"])) {
        $this->query("INSERT INTO page_context(file_name) VALUES(:file_name)");
        $this->bind(':file_name' , $filename);
        $this->execute();
        print_r($this->lastInsertId()); //0
        if($this->lastInsertId()){  //Doesn't get executed because no value
            header('Location: '.ROOT_URL.'home/pageContext/'.$filename);
            return;
        }
    }
  }
}

第一部分只是一个连接是否建立的测试。

lastInsertId就是这样建立起来的。

代码语言:javascript
复制
public function lastInsertId(){
    return $this->dbh->lastInsertId();
}

在堆栈溢出和其他站点上看到的已经够多了,但大多数时候都是一个错误或类似的错误。我找不到为什么lastInsertId是0的问题。

编辑!

这是我的构造函数,可以正常工作,因为我可以在调用特定项的地方检索其他信息(更新?在哪里?)。我只在运行时就连接起来了,因为id不工作,所以无法传递数据。

代码语言:javascript
复制
public function __construct(){
    $this->dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
}
EN

回答 1

Stack Overflow用户

发布于 2017-12-22 09:51:29

我认为首先您应该检查insert子句是否确实发生了数据已插入数据库的情况,

如有,则:

那么问题就出现在这行$this->lastInsertId()中,我建议检查这个“dbh”类

如否:

那么问题就来自于这一行

代码语言:javascript
复制
$this->query("INSERT INTO page_context(file_name) VALUES(:file_name)");

如果您可以告诉我们更多关于您正在使用的框架的信息,我们可以调试查询。

不过,我建议您也尝试插入静态值,看看它是否可以像

$this->query("INSERT INTO page_context(file_name) VALUES(some static value)");

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47938901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档