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

PHP mysqliは、パラメーターなしのストアード・プロシージャーのステートメントを準備しました

    ストアドプロシージャがプリペアドステートメントで機能する方法は、もう少し複雑です。 PHPマニュアル セッション変数(PHPではなくMySQLセッション)を使用する必要があると述べています

    だからあなたは

    でそれを行うことができます
    $connect=&ConnectDB();
    // bind the first parameter to the session variable @uid
    $stmt = $connect->prepare('SET @uid := ?');
    $stmt->bind_param('s', $uid);
    $stmt->execute();
    
    // bind the second parameter to the session variable @userCount
    $stmt = $connect->prepare('SET @userCount := ?');
    $stmt->bind_param('i', $userCount);
    $stmt->execute();
    
    // execute the stored Procedure
    $result = $connect->query('call IsUserPresent(@uid, @userCount)');
    
    // getting the value of the OUT parameter
    $r = $connect->query('SELECT @userCount as userCount');
    $row = $r->fetch_assoc();               
    
    $toRet = ($row['userCount'] != 0);
    

    備考:

    このプロシージャを、INTを返す1つのINパラメータを持つ関数として書き直すことをお勧めします。



    1. mysqliまたは死ぬ、それは死ぬ必要がありますか?

    2. 予算内での分割

    3. mysql selectを書き換えて時間を短縮し、tmpをディスクに書き込みます

    4. PowerShellを知る必要があるため