我在我正在构建的Web应用程序中使用PDO预处理语句。我将timestamp列设置为current_timestamp作为默认值。
使用时间戳通常应该在列值为null时分配当前时间戳,与now()相同。但无论我尝试什么,如果我将timestamp列设置为null并且如果我使用now(),则将00:00:00设置为NULL值。使用普通查询可以很好地完成。
我将参数作为关联数组发送,然后在PDOStatement上使用带有bindValue的foreach。在这个问题出现之前,它总能完美运行。我试过debugDumpParams,但它崩溃得相当惊人。它似乎是5.2.6的已知错误,Ubuntu还没有更新包。我宁愿避免绕过aptitude并从源代码安装php的麻烦,因为我甚至不确定debugDumpParams是否有帮助......
答案 0 :(得分:5)
5年后还是个问题......
另一个解决方案是,如果您不想做SQL请求,请直接在PHP中设置值,如下所示:date("Y-m-d H:i:s", time())
。
答案 1 :(得分:3)
听起来您的问题可能是您尝试在准备好的查询中使用MySQL函数作为参数值。这会失败,因为准备查询的过程会将其转换为SQL语句的文字,包括引用字符串等内容,这不是您想要的。因此,要将字段设置为NOW()
,请在准备之前在查询中进行分配,而不是在任何参数中进行分配。
另一方面,使用null参数值应该有效。但显然它没有,这可能是你提到的错误。同样,解决方案是直接在SQL中执行。您仍然可以将参数用于其他字段。