または、"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スタックをフラッシュする必要があります。