pal*_*laa 2 mysql stored-procedures insert
我想获取存储过程中最后插入行的唯一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 ;
Run Code Online (Sandbox Code Playgroud)
发生此错误
#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
Run Code Online (Sandbox Code Playgroud)
我怀疑它是mysqli_insert_id 什么,我该怎么办?
你mysqli_insert_id的问题是,你正在编写一个MySQL存储过程,而不是PHP.你想使用这个last_insert_id()功能:
LAST_INSERT_ID()(不带参数)返回一个BIGINT(64位)值,表示AUTO_INCREMENT由于最近执行的INSERT语句而成功为列添加的第一个自动生成的值.
您还需要修复分配语法.更像这样的东西:
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
-- ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6603 次 |
| 最近记录: |