-1
上午與去年插入ID面臨的問題,這是我的表結構PDO最後插入的id返回0
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.我不明白如何在活動服務器中複製該問題。
這是正確的方式來使用最後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();
我閱讀手冊,但這裏沒有使用commit(),沒有提交得到正確的最後一個插入ID。我也嘗試了commit()。我在提取最後一個插入ID後使用了commit()。它也正常工作。 – Dibish
你的意思是在本地,並且它在服務器上一次不工作? – wribit
它在本地服務器上工作,我從來沒有遇到過任何問題,在現場它也工作。但對於一些用戶,當我檢查數據庫他們的會話ID是0.我不能複製這個問題呢?這是會話還是最後一個inser id的問題? – Dibish