Eller endda bare lav en "SELECT @id AS id"
derefter $row->id
vil fungere fint. Jeg omdøber altid udvalgte kolonner for at holde navnet meningsfuldt, når det er nødvendigt :-)
BTW, du kan simpelthen sammenkæde opkaldet og vælge @... (med en; sætningsadskiller), og RS vil være den returnerede værdi. Desværre returnerer dette et multi-resultatsæt, og du er nødt til at tømme hele sættet, ellers vil de efterfølgende forespørgsler gå i stå. Se følgende eksempler:
$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();
Alternativt kan du tilføje markeringen til addNewUser og returnere en RS i stedet for 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
Det første returnerer et multiquery-sæt (NULL, RS) og det andet et (RS, NULL)-sæt, derfor kan du bruge et simpelt query()-kald, som indlejrer det første fetch_object(), men du skal stadig tømme RS-stakken.