php
  • mysqli
  • arguments
  • 2012-04-13 33 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

    相关问题