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

PHP:Kald MySQL Stored Procedure med både INPUT- OG OUTPUT-parametre (IKKE INOUT)

Desværre gør MySQLi ikke har nogen indbygget understøttelse af output sproc-parametre; man skal i stedet udlæse i MySQL brugervariabler og hent derefter værdierne ved hjælp af en separat SELECT erklæring.

Brug af proceduregrænsefladen:

$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 ved at bruge den objektorienterede grænseflade:

$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. Opret forbindelse til en MySQL-server over SSH i PHP

  2. INDLEDE DATAINFIL nemt konvertere ÅÅÅÅMMDD til ÅÅÅÅ-MM-DD?

  3. Jeg har en række heltal, hvordan bruger jeg hver enkelt i en mysql-forespørgsel (i php)?

  4. Hvordan ændres datostil i PostgreSQL?