sql >> Databasteknik >  >> RDS >> Mysql

PHP - MySQL får värdet av ut parameter från en lagrad procedur

Eller till och med bara göra en "SELECT @id AS id" sedan $row->id kommer att fungera bra. Jag byter alltid namn på valda kolumner för att behålla namnet meningsfullt när det behövs :-)

BTW, du kan helt enkelt sammanfoga samtalet och välja @... (med en;-satsavgränsare) och RS kommer att vara det returnerade värdet. Tyvärr returnerar detta en multi-resultset och du måste spola hela uppsättningen annars kommer de efterföljande frågorna att stanna. Se följande exempel:

$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 lägg till markeringen i addNewUser och returnera en RS istället för 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

Den första returnerar en multiquery-uppsättning (NULL, RS) och den andra en (RS, NULL)-uppsättning, därför kan du använda ett enkelt query()-anrop som bäddar in det första fetch_object(), men du behöver fortfarande tömma RS-stacken.



  1. MySQL en-till-många går med i Group By ger bara en observation

  2. 4 sätt att få information om en tabells struktur i SQLite

  3. Hur du gör din MySQL- eller MariaDB-databas mycket tillgänglig på AWS och Google Cloud

  4. Kontrollera kolumn/nyckel finns?