sql >> Databasteknik >  >> RDS >> Mysql

PHP:Anropa MySQL lagrad procedur med både INPUT OCH OUTPUT parametrar (INTE INOUT)

Tyvärr gör MySQLi inte ha något inbyggt stöd för output sproc-parametrar; man måste istället mata ut till MySQL användarvariabler och hämta sedan värdena med en separat SELECT uttalande.

Använda procedurgränssnittet:

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = mysqli_connect();

$call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, @sum, @product, @average)');
mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3);
mysqli_stmt_execute($call);

$select = mysqli_query($mysqli, 'SELECT @sum, @product, @average');
$result = mysqli_fetch_assoc($select);
$procOutput_sum     = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];

Eller genom att använda det objektorienterade gränssnittet:

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = new mysqli();

$call = $mysqli->prepare('CALL test_proc(?, ?, ?, @sum, @product, @average)');
$call->bind_param('iii', $procInput1, $procInput2, $procInput3);
$call->execute();

$select = $mysqli->query('SELECT @sum, @product, @average');
$result = $select->fetch_assoc();
$procOutput_sum     = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];


  1. Introduktion till temporära tabeller i SQL Server

  2. Vilken typ av JOIN som ska användas

  3. Få Hibernate och SQL Server att spela bra med VARCHAR och NVARCHAR

  4. Visa alla rader i mysql-tabellen och ge sedan möjlighet att ta bort specifika