Of doe gewoon een "SELECT @id AS id"
dan $row->id
zal goed werken. Ik hernoem altijd geselecteerde kolommen om de naam zinvol te houden wanneer dat nodig is :-)
Trouwens, je kunt de aanroep eenvoudig samenvoegen en @... selecteren (met een scheidingsteken; statement) en de RS zal de geretourneerde waarde zijn. Helaas retourneert dit een mutli-resultset en moet je de volledige set flushen, anders lopen de volgende query's vast. Zie de volgende voorbeelden:
$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();
Of voeg de select toe aan de addNewUser en retourneer een RS in plaats van 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
De eerste retourneert een multiquery (NULL, RS) set en de tweede een (RS, NULL) set, dus je kunt een eenvoudige query()-aanroep gebruiken die de eerste fetch_object( insluit), maar je moet nog steeds de RS-stack leegmaken.