sql >> Database teknologi >  >> RDS >> Mysql

PHP - MySQL får værdien af ​​ud parameter fra en lagret procedure

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.



  1. Sådan installeres og sikres MariaDB på CentOS 8

  2. Hvorfor vælge Top-klausul kan føre til lange tidsomkostninger

  3. MySQL-opdateringstabel baseret på en anden tabelværdi

  4. MariaDB POWER() Forklaret