sql >> データベース >  >> RDS >> Mysql

トリガーから生成されたが渡されないIDフィールドを挿入します

    個人的にはストアドプロシージャを使用しています。
    PDOの基本的な例は次のとおりです。

    ストアドプロシージャを作成するためのコード :

    CREATE DEFINER=`user`@`localhost` PROCEDURE `InsertUser`(IN `Input_username` INT, OUT `Out_ID` INT)
        LANGUAGE SQL
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
    BEGIN
    
       INSERT INTO users(
            username)
        VALUES (
        Input_username);
    
        SET Out_ID = LAST_INSERT_ID();
        SELECT Out_ID;
    END
    

    そしてPHPコード

      $insert = "CALL InsertUser(:Input_username,
                                 @Out_ID)";
      $bdd = new PDO('mysql:host=localhost;dbname=db-name', 'user', 'password');
    
      $stmt = $bdd->prepare($insert);     
      $stmt->bindParam(':Input_username', rand(), PDO::PARAM_STR); // to create random name
    
      $stmt->execute();
      $tabResultat = $stmt->fetch();
      $id_user = $tabResultat['Out_ID'];
      var_dump($id_user);
    

    私が助けてくれたことを願っています。 :)



    1. PostgreSQLのクエリエラーによって結果が返されません

    2. WHILEステートメントのMySQL構文エラー

    3. PostgreSQLでのクエリ最適化。 EXPLAINの基本–パート3

    4. インデックスが多いテーブルの一括挿入が遅い