Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP:wywoływanie procedury składowanej MySQL z parametrami INPUT i OUTPUT (NOT INOUT)

Niestety, MySQLi nie mieć jakiekolwiek natywne wsparcie dla wyjściowych parametrów sproc; zamiast tego należy wypisać do MySQL zmienne użytkownika a następnie pobierz wartości za pomocą oddzielnego SELECT oświadczenie.

Korzystanie z interfejsu proceduralnego:

$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'];

Lub używając interfejsu obiektowego:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawić, by mysqli rzucał wyjątki za pomocą MYSQLI_REPORT_STRICT?

  2. mysql zastępuje znaki akcentowane

  3. Jak ograniczyć wiele liczb, filtrując wiele kolumn w MySql?

  4. Wybór danych tabeli z deklaracjami PDO

  5. Zaktualizować wiele wierszy za pomocą jednego zapytania?