[英]MySQL: LAST_INSERT_ID() returns 0
我有這個測試表:
CREATE TABLE IF NOT EXISTS `test` (
`id` INT(10) AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4;
使用這三個中的任何一個插入
INSERT INTO `test` (`id`) VALUES (NULL);
INSERT INTO `test` (`id`) VALUES (0);
INSERT INTO `test` () VALUES ();
發行
SELECT LAST_INSERT_ID();
但查詢總是導致0
。
PHP的mysql_insert_id
和PDO::lastInsertId()
沒有結果。
我整整一天都在玩弄它無法讓它發揮作用。 想法?
問題似乎是MySQL的phpmyadmin配置文件PersistentConnections
設置為FALSE
,每次發出查詢時都會產生一個新的CONNECTION_ID
- 因此呈現SELECT LAST_INSERT_ID()
無效。
后續主題中的更多信息每個查詢都會創建一個新的CONNECTION_ID()
還要感謝dnagirl的幫助
對於這個問題我只需要50美分,我只是注意到如果你的表沒有將AUTO_INCREMENT
設置為索引,你將不會得到大於0
的LAST_INSERT_ID
。
我浪費了大約半個小時。 事實證明我一直得到一個0
的LAST_INSERT_ID()
,對於這個表實際上是好的。
你必須結合起來
INSERT INTO test (title) VALUES ('test');SELECT LAST_INSERT_ID();
然后,您將獲得最后一個插入ID
我遇到過同樣的問題。 當在具有INSERT查詢的PHP函數內請求時, mysql_insert_id()
或LAST_INSERT_ID()
返回0。
我通過在INSERT查詢函數之后從一個單獨的PHP函數請求mysql_insert_id()
的值來對問題進行排序。
它完美地工作......試試吧......
$result = mysql_query("INSERT INTO `test` (`title`) VALUES ('test')");
if ($result) {
$id = mysql_insert_id(); // last inserted id
$result = mysql_query("SELECT * FROM tablename WHERE id = $id") or die(mysql_error());
// return user details
if (mysql_num_rows($result) > 0) {
return mysql_fetch_array($result);
} else {
return false;
}
} else {
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.