调用一个PDO查询出错的函数


Calling a function that a PDO query error

我是PDO的新手,如果这可能很简单,我很抱歉,但我花了几个小时试图找到答案,因此无法发布。

我的函数文件中存储了一个函数:

   function insertlogs($user)
      {
    $page = basename($_SERVER['PHP_SELF']);
    $ip = GetIP();
    $ub = getBrowser();
    $regdate = date("Y-m-d");
    $regtime = date("H:i:s");

              try{
                  $sql =  "INSERT INTO admin_logs (id, 
                   page, 
                   ip, 
                   browser, 
                   loggedinuser, 
                   date, 
                   time) VALUES (
                   :gid, 
                   :page, 
                   :ip, 
                   :ub, 
                   :user, 
                   :regdate, 
                   :regtime )";
$stmt = $db->prepare($sql);         

$stmt->bindParam(':gid', $gid );       
$stmt->bindParam(':page', $page); 
$stmt->bindParam(':ip', $ip);
$stmt->bindParam(':ub', $ub); 
$stmt->bindParam(':user', $user);   
$stmt->bindParam(':regdate', $regdate); 
$stmt->bindParam(':regtime', $regtime);

$stmt->execute(); 

}
catch(PDOException $e) {
echo $e->getMessage();
 }}

当我独立运行时,它运行良好。但是,当我调用这个函数时,insertlogs($user);它给了我致命的错误:在….error中对非对象调用成员函数prepare()。

我已经检查了连接,看起来很好,我就是想不通?任何帮助或建议都将不胜感激。

当我独立运行时,它运行良好。然而,当我这样称呼它时函数插入日志($user);它给了我一个致命的错误:调用成员函数prepare()在….error中的非对象上。

我想"我独立运行这个"是指你在函数范围之外运行代码。当你把它作为一个函数调用,$db是一个全局变量时,php并不知道它

http://php.net/manual/en/language.variables.scope.php

因此,要么将其作为第二个变量传递(优选):

function insertlogs($user, &$db)

或者使用全局:

function insertlogs($user)
{
    global $db;