我正在处理登录脚本,但遇到了lastInsertId();
的问题这是代码;
<?php
session_start();
db = new PDO("mysql:host=hostname;dbname=database name", user, password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$db->beginTransaction();
$db->query("INSERT INTO `subscribers`(`subscribers`.`first_name`, `subscribers`.`last_name`) VALUES ('Jane', 'Doe')");
$db->query("UPDATE `subscribers` SET `first_name`='John' WHERE `ID` =".$db->lastInsertId());
$db->commit();
$LastID = $db->lastInsertId();
$_SESSION['user_id'] = $LastID;
} catch (PDOException $e) {
$db->rollBack();
die($e->getMessage());
}
?>
我的问题是UPDATE查询正常执行(基于WHERE ID
=“。$ db-&gt; lastInsertId());)但是当我尝试使用该函数将$ _SESSION设置为我在代码中看到的只有0。
如果有人不介意告诉我什么是歪斜我会非常感激,并且我提前感谢你。
答案 0 :(得分:0)
为什么不呢:
$db->beginTransaction();
$db->query("INSERT INTO `subscribers`(`subscribers`.`first_name`, `subscribers`.`last_name`) VALUES ('Jane', 'Doe')");
// Grab, save
$LastID = $db->lastInsertId();
// Query by last ID
$db->query("UPDATE `subscribers` SET `first_name`='John' WHERE `ID` =".$LastID);
$db->commit();
// Write last ID to session
$_SESSION['user_id'] = $LastID;
答案 1 :(得分:0)
我的猜测是update
会破坏lastInsertId
的{{1}}。
尝试将id存储在变量中以供以后使用:
insert