Atau bahkan cukup lakukan "SELECT @id AS id"
lalu $row->id
akan bekerja dengan baik. Saya selalu mengganti nama kolom pilih agar nama tetap bermakna bila perlu :-)
BTW, Anda cukup menggabungkan panggilan dan memilih @... (dengan pembatas pernyataan;) dan RS akan menjadi nilai yang dikembalikan. Sayangnya ini mengembalikan mutli-resultset dan Anda perlu menyiram set lengkap jika tidak, kueri berikutnya akan terhenti. Lihat contoh berikut:
$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();
Atau tambahkan pilih ke dalam addNewUser dan kembalikan RS alih-alih keluar param
$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
Yang pertama mengembalikan set multiquery (NULL, RS) dan yang kedua (RS, NULL), maka Anda dapat menggunakan panggilan query() sederhana yang menyematkan fetch_object() pertama, tetapi Anda masih perlu membersihkan tumpukan RS.