这个问题在这里已经有答案了:
pdo lastinsertid返回零(0)(2个答案)
两年前关门了。
你好,请帮我把上次插入的索引返回0。
public function insert($client) {
$sql = "insert into client (nom,adresse,tel) values (:nom,:adresse,:tel)";
$stmt = $this->connect()->prepare($sql);
$nom = $client->getNom();$adresse = $client->getAdresse();$tel = $client->getTel();
$stmt->bindParam(':nom', $nom, PDO::PARAM_STR);
$stmt->bindParam(':adresse', $adresse, PDO::PARAM_STR);
$stmt->bindParam(':tel', $tel, PDO::PARAM_STR);
$query = $stmt->execute();
$lastId = $this->connect()->lastInsertId($sql);
if ($query) {
$client->setId($lastId);
$this->liste[$lastId] = $client;
$_SESSION['listeClient'] = $this->liste;
return TRUE;
}
}
我的数据库连接
protected function connect() {
$this->servername = "localhost";
$this->username = "root";
$this->password = "";
$this->dbname = "pdo";
$this->charset = "utf8mb4";
try {
$dsn = "mysql:host=" . $this->servername . ";dbname=" . $this->dbname . ";charset=" . $this->charset;
$pdo = new PDO($dsn, $this->username, $this->password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch (\Exception $e) {
echo "connection failed: " . $e->getMessage();
}
}
谢谢你的帮助。我在公共关系中尝试了所有的建议écé丹特的问题和我的问题一样
1条答案
按热度按时间yrefmtwq1#
要检索lastinsertid,您的代码将第二次连接到数据库,而驱动程序可能只是不通过多个连接共享插入ID:
相反,保留connect()中创建的pdo对象,并重用它来查询最后一个id。
另请参阅phppdo文档,特别是评论部分。