PHP日志代码不起作用

时间:2016-02-03 18:17:37

标签: php mysqli

在尝试执行我的php代码以将日志插入数据库中的日志表时,我一直收到此错误:

  

致命错误:在第420行的/home/thehumanscience/public_html/kyasro1/home.php中调用非对象的成员函数bind_param()

420行是:

      $sql = $mysqli->prepare("INSERT INTO logs (username, action, timestamp) VALUES (?,?,?)");
      $sql->bind_param('sss', $usernameLogged, "Updated Contact Info", NOW());

      $sql->execute();

1 个答案:

答案 0 :(得分:2)

您无法像尝试那样绑定NOW()。如果你想使用MySQL函数,你必须“开箱即用”,可以这么说:

$sql = $mysqli->prepare("INSERT INTO `logs` (`username`, `action`, `timestamp`) VALUES (?,?,NOW())");
$sql->bind_param('ss', $usernameLogged, "Updated Contact Info");

确保timestamp的列类型正确无误。如果您愿意,可以从PHP获取第三个变量的时间戳,然后绑定到该变量。

请注意,我已经回复了表格和列名称。正如我的好朋友Fred -ii所指出的那样,它们是keywords(未保留),并且关键字不需要后面的 。我觉得这很好。

根据与OP和我的好朋友Fred -ii的讨论,需要做出以下更改:

您不能直接在bind_param()语句中嵌入字符串。将字符串分配给变量以及移动NOW()函数可以解决以下问题:

$actionTaken = "Updated Contact Info";
$sql = $mysqli->prepare("INSERT INTO `logs` (`username`, `action`, `timestamp`) VALUES (?,?,NOW())"); 
$sql->bind_param('ss', $usernameLogged, $actionTaken);