当我试图向数据库中添加INSERT以将数据推入数据库时,它没有添加任何内容。注意到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();
}在堆栈溢出和其他站点上看到的已经够多了,但大多数时候都是一个错误或类似的错误。我找不到为什么lastInsertId是0的问题。
编辑!
这是我的构造函数,可以正常工作,因为我可以在调用特定项的地方检索其他信息(更新?在哪里?)。我只在运行时就连接起来了,因为id不工作,所以无法传递数据。
public function __construct(){
$this->dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
}发布于 2017-12-22 09:51:29
我认为首先您应该检查insert子句是否确实发生了数据已插入数据库的情况,
如有,则:
那么问题就出现在这行$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)");
https://stackoverflow.com/questions/47938901
复制相似问题