sql >> Database >  >> RDS >> Mysql

PHP - MySQL haalt de waarde van de parameter uit een opgeslagen procedure

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.



  1. Unieke rijen selecteren in een set van twee mogelijkheden

  2. Een opgeslagen procedure plannen in MySQL

  3. MySQL slaat ongerichte grafiekranden efficiënt op

  4. Onbekende kolom in 'veldlijst'-fout op MySQL Update-query