Nebo dokonce stačí udělat "SELECT @id AS id"
pak $row->id
bude fungovat dobře. Vždy přejmenovávám vybrané sloupce, aby měl název v případě potřeby smysl :-)
BTW, můžete hovor jednoduše zřetězit a vybrat @... (s oddělovačem příkazu;) a RS bude vrácená hodnota. Bohužel to vrací vícenásobnou sadu výsledků a musíte vyprázdnit celou sadu, jinak se následné dotazy zastaví. Viz následující příklady:
$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();
Případně přidejte select do addNewUser a vraťte RS místo out 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
První vrací sadu multiquery (NULL, RS) a druhá sadu (RS, NULL), takže můžete použít jednoduché volání query(), které vloží první fetch_object(), ale stále musíte vyprázdnit zásobník RS.