在尝试执行我的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();
答案 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);