我面临最后一个插入 ID 的问题,这是我的表结构
CREATE TABLE `user` (
`id` int(30) NOT NULL AUTO_INCREMENT,
`fbtoken_id` varchar(255) DEFAULT NULL,
`user_name` varchar(255) DEFAULT NULL,
`email` varchar(50) NOT NULL,
`city` varchar(50) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
`fbuserid` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1
$stmt = $this->core->dbh->prepare("INSERT INTO user(fbtoken_id,user_name,email,city,created,modified,fbuserid)
VALUES(:fbtoken_id,:first_name,:email,:location,:created,:modified,:fbuserid)");
$stmt->execute(array(':fbtoken_id' => $access_token, ':first_name' => $first_name, ':email' => $email, ':location' => $location,
':created' => $datetime, ':modified' => $datetime,':fbuserid' => $fbuserid));
$_SESSION['userid']=$this->core->dbh->lastInsertId();
$affected_rows = $stmt->rowCount();
echo 'userid', $_SESSION['userid'];
这里我将最后一个插入 ID 设置为会话,并为他的所有事务使用用户 ID。在我的本地测试中,我正确地获取了最后一个插入 ID。一切都很完美。但是,当我将代码上传到服务器时,有时会话未设置或最后一个插入 ID 为 0。我不明白如何在实时服务器中复制该问题。
使用 last insertid 或任何其他替代方法来获取新用户 ID 是正确的方法吗?
我看到在某些情况下使用
$this->core->dbh->beginTransaction();
last insert id
$this->core->dbh->commit();
需要这个代码吗?
请帮我调试一下情况。提前致谢
//编辑
$stmt = $this->core->dbh->prepare("INSERT INTO user(fbtoken_id,user_name,email,city,created,modified,fbuserid)
VALUES(:fbtoken_id,:first_name,:email,:location,:created,:modified,:fbuserid)");
$this->core->dbh->beginTransaction();
$stmt->execute(array(':fbtoken_id' => $access_token, ':first_name' => $first_name, ':email' => $email, ':location' => $location,
':created' => $datetime, ':modified' => $datetime,':fbuserid' => $fbuserid));
$_SESSION['userid']=$this->core->dbh->lastInsertId();
$affected_rows = $stmt->rowCount();
echo 'userid', $_SESSION['userid'];
$this->core->dbh->commit();