2012-04-25 54 views
2

我想要得到的唯一ID上次插入行的存儲過程裏面,我作出這樣獲取的唯一ID上次插入行

DELIMITER // 
CREATE PROCEDURE addNewUsers(IN userName varchar(128),IN password varchar(128), IN addedBy INT) 

BEGIN 

DECLARE id int default 0; 

    id = mysqli_insert_id (insert into `system_users`(`username`,`password`) values (userName ,md5(password))); 
    IF id <> 0 THEN  
     insert into `user_profile`(`full_name`,`Date_time_ added`,`added_by`) values (userName ,CURRENT_TIMESTAMP(),addedBy) where `user_id`=id ; 
    END IF 


END // 

DELIMITER ; 

此錯誤發生

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= mysqli_insert_id (insert into `system_users`(`username`,`password`) values (' at line 7 

我懷疑這是從mysqli_insert_id,我該怎麼辦?

回答

6

您的mysqli_insert_id是問題所在,您正在編寫MySQL存儲過程,而不是PHP。要使用的last_insert_id()功能:

LAST_INSERT_ID()(無參數)返回表示執行INSERT成功插入用於AUTO_INCREMENT列中最近的結果,第一自動生成的值的BIGINT(64位)的值聲明。

您還需要修復您的分配語法。更多的東西是這樣的:投票

DELIMITER // 
CREATE PROCEDURE addNewUsers(IN userName varchar(128),IN password varchar(128), IN addedBy INT) 
BEGIN 
    DECLARE id int default 0; 

    insert into `system_users`(`username`,`password`) values (userName ,md5(password)); 
    set id = last_insert_id(); 
    if id <> 0 then 
    -- ... 
+0

Huuuuuuuuuuuge感謝名單 – palAlaa 2012-04-25 07:22:40

+0

,救我工作的時間。 – vietnguyen09 2016-01-12 15:33:26