我已經閱讀了MySQL-bug列表,在那裏我發現,last_insert_id()在執行多個插入語句時返回FIRST auto_increment-value。執行多個查詢時檢索last_insert_id
(鏈接:http://bugs.mysql.com/bug.php?id=34319)
我的問題是,在我的代碼,我其實只是我已經進行了一些選擇後得到的值我的嵌套組進行1個插入查詢。但last_insert_id()仍然返回「0」作爲ID,即使我只有1個插入查詢。你知道可能是什麼問題嗎? :)
$query = $this->prepare("
SELECT @myRight := c.Rgt FROM ".DB_PREFIX."C_Categories c
WHERE c.CategoryID = :cat_id;
UPDATE ".DB_PREFIX."C_Categories c1 SET c1.Rgt = c1.Rgt + 2 WHERE c1.Rgt >= @myRight;
UPDATE ".DB_PREFIX."C_Categories c2 SET c2.Lft = c2.Lft + 2 WHERE c2.lft > @myRight;
INSERT INTO ".DB_PREFIX."C_Categories
(CategoryName, MetaTag, Description, ParentID, Lft, Rgt)
VALUES (:cat_name, :cat_tag, :desc, :parent_id, @myRight, @myRight+1);
");
$params = array(
array('cat_name', $data['name'], 'STR'),
array('cat_tag', $data['metatag'], 'STR'),
array('desc', $data['description'], 'STR'),
array('parent_id', $data['parentid'], 'INT'),
array('cat_id', $parent_id, 'INT')
);
$this->exec($query, $params);
$id = $this->lastInsertId();
return $id;
你可以在這樣的單個查詢中放置多個語句嗎? – andrewsi
嗯,它不會給我任何錯誤 - 它執行完全按照我想要的INSERT查詢,所以是的,我很確定,我可以:) – denlau
@andrewsi http://stackoverflow.com/questions/6346674/pdo-support-for-multiple-queries-pdo-mysql -pdo-mysqlnd – h2ooooooo