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

PHP-MySQLはストアドプロシージャからoutパラメータの値を取得します

    または、"SELECT @id AS id"を実行するだけでもかまいません。 次に$row->id 正常に動作します。必要に応じて名前を意味のあるものに保つために、常にselect列の名前を変更します:-)

    ところで、呼び出しを連結して@ ...(;ステートメント区切り文字を使用)を選択すると、RSが戻り値になります。残念ながら、これは複数の結果セットを返すため、完全なセットをフラッシュする必要があります。そうしないと、後続のクエリが停止します。次の例を参照してください:

    $db->multi_query( "CALL addNewUser($name,$age,@id);SELECT @id as id" );
    $db->next_result();            // flush the null RS from the call
    $rs=$db->store_result();       // get the RS containing the id
    echo $rs->fetch_object()->id, "\n";
    $rs->free();
    

    または、selectをaddNewUserに追加し、outparamの代わりにRSを返します

    $rs = $db->query( "CALL addNewUser($name,$age)" );
    echo $rs->fetch_object()->id, "\n";
    $rs->close();
    $db->next_result();            // flush the null RS from the call
    

    1つ目はマルチクエリ(NULL、RS)セットを返し、2つ目は(RS、NULL)セットを返すため、最初のfetch_object()を埋め込む単純なquery()呼び出しを使用できますが、RSスタックをフラッシュする必要があります。



    1. SQL Server更新トリガー、変更されたフィールドのみを取得

    2. MySQLチュートリアル–MySQLを学ぶための初心者向けガイド

    3. Python / postgres / psycopg2:挿入されたばかりの行のIDを取得

    4. PDOODBCを介してPHPをMSSQLに接続します