这一切都在添加以更新" last_update"的部分之前工作。
if((time() - $last_update) > 7200){
$sql = $dbh->prepare("UPDATE item_list SET quantity=:quantity, price=:price, last_update=:now WHERE item_name=:itemname");
$sql->bindParam(':quantity', $json->volume);
$sql->bindParam(':price', $json->lowest_price);
$sql->bindParam(':itemname', $row['Item_Name']);
$sql->bindParam(':now', "NOW()"); //This doesn't work
$sql->execute();
}
当这个称为时,我想立即制作last_update日期和时间。在数据库中,它是当前的日期时间,当我last_update时,我将它们设置为NOW();
这样做我会得到错误致命错误:无法通过参考来传递参数2。目录
我知道它会期望变量,但是我不确定如何修复它。我尝试设置
$now = "NOW()";
$sql->bindParam(':now', $now);
毫无用处。有帮助吗?
为什么需要绑定,只需直接放置()
$sql = $dbh->prepare("UPDATE item_list SET quantity=:quantity, price=:price, last_update=now() WHERE item_name=:itemname");
如果您的last_update列正在寻找unix时间戳,则要做:
$now = time();
$sql->bindParam(':now', $now);
如果是在不同的时间格式之后,请使用日期(),并且必须设置日期和时间
您可以保持绑定查询为&从查询中删除last_update
列。
由于您正在通过其他查询更新记录中的其他内容,因此您可以将字段last_update
的默认值设置为CURRENT_TIMESTAMP
&将其属性设置为ON UPDATE CURRENT_TIMESTAMP
。这将确保它在当前时间()更新时都会随当前时间自动更新。
您正确地说,删除bind()以防止SQL注入尝试并不是最好的事情。