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

    當我在另一個文件中調用函數時,執行mysql命令時出現問題。如果我在同一個文件中的代碼,它工作正常。代碼如下:將mysqli連接傳遞給PHP函數 - 不同步

    身份驗證:

    { 
        $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); 
    

    這個函數的開頭是:

    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的錯誤是:無效的對象或資源mysqli_stmt,以及DB錯誤是:命令出同步;你現在不能運行這個命令。

    任何建議將不勝感激。

    回答

    2

    嘗試在取回之後添加此項。

    mysqli_free_result($result); 
    

    mysqli_close($conn); 
    
    +1

    的時間在我早期編碼日子,我會利用已經設置資源陷入了量! – Lock 2012-04-13 01:22:55

    +0

    謝謝。我在裏面放了一個stmt-> close(),它就可以工作。我現在正在確保所有貨幣都關閉。 – jpporterVA 2012-04-13 01:44:42

    相關問題