2

ストアド プロシージャ内で最後に挿入された行の一意の 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 どうすればいいですか?

4

1 に答える 1

7

あなたmysqli_insert_idが問題です。PHP ではなく、MySQL ストアド プロシージャを作成しています。関数を使用したいlast_insert_id()

LAST_INSERT_ID()(引数なし) は、最後に実行されたステートメントAUTO_INCREMENTの結果として列に正常に挿入された最初の自動生成値を表す BIGINT (64 ビット) 値を返します。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
    -- ...
于 2012-04-25T06:41:48.270 に答える