sql >> データベース >  >> RDS >> Mysql

PHP:INPUTパラメータとOUTPUTパラメータの両方を使用してMySQLストアドプロシージャを呼び出す(INOUTではない)

    残念ながら、MySQLi はしません 出力sprocパラメータのネイティブサポートがあります。代わりに、MySQL ユーザー変数 に出力する必要があります 次に、別のSELECTを使用して値をフェッチします ステートメント。

    手続き型インターフェースの使用:

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

    または、オブジェクト指向インターフェースを使用します:

    $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. OracleRACでのInMemoryDUPLICATEの混乱

    2. OracleJobSchedulerを使用したIRIデータ統合ジョブの自動化

    3. Drupalのデフォルトのパスワード暗号化方法は何ですか?

    4. PHPは特定の状況下でmysqlコンテナ名を解決できません