gpt4 book ai didi

php - 插入后获取最后一个 ID(始终返回 0)

转载 作者:可可西里 更新时间:2023-11-01 00:55:50 25 4
gpt4 key购买 nike

我有一个这样的 Sql 类:

        class Sql extends PDO {
private $connection;
public function __construct() {
$this->connection = new PDO("mysql:host=localhost;dbname=myDB", "root", "root");
}

(...)

然后我尝试使用另一个类“user.php”在我的数据库中插入数据。使用“getConection”(sql 类方法)。像这样:

class User {
private $iduser;
private $deslogin;
private $despassword;
private $datecad;

(getters & setters)

public function insert() { //query & select are a SQL class method
$sql = new Sql();
$sql->query("INSERT INTO tb_users (deslogin, despassword) VALUES (:LOGIN, :PASS))", array(
':LOGIN'=>$this->getDeslogin(),
':PASS'=>$this->getDespassword()
));

echo $sql->getConnection()->lastInsertId(); //getConnection is a Sql Class method that returns the private connection.
}

为什么我的回显总是返回0?

最佳答案

这是因为您需要关于插入查询的相同连接对象来获取最后插入的 ID 但是您正在创建新连接以获取最后插入的 ID。这就是为什么您总是得到 0 作为结果。

查看引用:

http://php.net/manual/en/pdo.lastinsertid.php#120618

编辑

从你的代码中引用它在你的insert中的问题你有没有标记有一个额外的右括号

将您的代码更改为:

$sql->query("INSERT INTO tb_users (deslogin, despassword) VALUES (:LOGIN, :PASS)", array(
':LOGIN'=>$this->getDeslogin(),
':PASS'=>$this->getDespassword()
)); //<------there must be only one bracket after::LOGIN, :PASS

关于php - 插入后获取最后一个 ID(始终返回 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44449900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com