php
  • mysqli
  • arguments
  • 2012-04-13 14 views 0 likes 
    0

    別のファイルで関数を呼び出すときにmysqlコマンドを実行する際に問題があります。同じファイルにコードがあるとうまくいきます。PHP関数へのmysqli接続の引き継ぎ - 同期外

    認証::私は関数を呼び出す場合は今

    { 
        $conn = new mysqli($dbserver, "dbuser", "pass", $dbname); 
        $sql = 'SELECT userId, salt, pwd, isAdmin FROM users where username = ?'; 
        $stmt = $conn->stmt_init(); 
        $stmt->prepare($sql); 
        $stmt->bind_param('s', $username); 
        $stmt->bind_result($userId, $salt, $storedPwd, $isAdmin); 
        $stmt->execute(); 
        $stmt->fetch(); 
    } 
    

    、直後フェッチ、それはbind_paramラインに失敗したコードは次のようになります。私はこのようにそれを呼び出す:

    updateUserActivity ($conn, $tpcLang, 'LI', $userId); 
    

    この関数の始まりです:無効なオブジェクトまたはリソースmysqli_stmt、およびDBエラーがある:

    function updateUserActivity ($conn, $lang, $activityType, $userId) 
    { 
        // check that activity is valid 
        $sql = 'SELECT activityType 
          FROM activityType 
          WHERE activityType = ?'; 
        $stmt = $conn->stmt_init(); 
        $stmt->prepare($sql); 
        $stmt->bind_param('s', $activityType); 
        $stmt->bind_result($activityTypeInDB); 
        $stmt->execute(); 
        $stmt->fetch(); 
    
        if ($activityType == $activityTypeInDB){ 
         $success=1; 
        } else { 
         $success=0; 
         $msg = $lang->get('UPDATE_USER_INVALID_ACTIVITY_ERROR_MSG') . " " . $activityType . " (" . $stmt->errno . "): " . $stmt->error; 
         error_log ($msg); 
        } 
        // continue on to add a row in the userActivity table 
    } 
    

    私はbind_paramに乗るエラーがあるアウトコマンド同期の;今すぐこのコマンドを実行することはできません。

    ご意見をいただければ幸いです。

    答えて

    2

    フェッチ後にこれを追加してみてください。

    mysqli_free_result($result); 
    

    または

    mysqli_close($conn); 
    
    +1

    倍の量私はすでに設定されたリソースを用いて捕まるだろう私の初期の符号化時代に! – Lock

    +0

    ありがとうございます。私はそこにstmt-> close()を入れています。私は今、すべてのstmtsが閉鎖されていることを確認するプロセスに入っています。 – jpporterVA

    関連する問題