LastInsertId返回0

问题描述 投票:0回答:1

当我尝试添加INSERT INTO将数据推送到我的数据库时,它没有添加任何内容。注意到lastInsertId不起作用。回馈0。

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

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

这就是我构建查询的方式:

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的构建方式。

public function lastInsertId(){
    return $this->dbh->lastInsertId();
}

在stackoverflow和其他网站上看得够,但大多数时候这是一个错字或就是这样。我无法确定为什么lastInsertId为0的问题。

编辑!

这是我的构造函数,它工作正常,因为我可以检索我调用特定项目(UPDATE?WHERE?)的其他信息。我在运行时得到了连接,因为id不能正常工作,我无法传递数据。

public function __construct(){
    $this->dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
}
php sql
1个回答
1
投票

我想首先你应该检查插入子句是否确实发生了数据已插入数据库,

如是:

然后问题是在这行$this->lastInsertId(),我会建议检查这个'dbh'类

如果不:

然后问题来自这条线

$this->query("INSERT INTO page_context(file_name) VALUES(:file_name)");

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

但我建议尝试也插入静态值,看看它是否有效

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

© www.soinside.com 2019 - 2024. All rights reserved.