谢谢你的期待.所有有用的答案/评论都已经过投票.
在php中,您可以像这样使用NOW():
mysql_query("INSERT INTO tablename (id, value, time_created)
VALUES ('{$id}', '{$value}', NOW())");
Run Code Online (Sandbox Code Playgroud)
我怎么能在PDO中做同样的事情.当我像这样绑定时,我收到一个错误:
$stmt->bindParam(':time_added', NOW(), PDO::PARAM_STR);
Run Code Online (Sandbox Code Playgroud)
它是PDO:PARAM_STR?
Ste*_*rig 52
因为没有人明确回答过这个问题(虽然可以从评论中提取正确答案给Ollie Saunders的答案),但为了完整起见,我会添加正确的答案.
$stmt = $pdoDb->prepare('INSERT INTO tablename (id, value, time_created) VALUES (:id, :value, NOW())');
// either bind each parameter explicitly
$stmt->bindParam(':id', $id); // PDOStatement::bindValue() is also possibly
$stmt->bindParam(':value', $value);
$stmt->execute();
// or bind when executing the statement
$stmt->execute(array(
':id' => $id,
':value' => $value
));
Run Code Online (Sandbox Code Playgroud)
Ken*_*ogt 14
假设您的PDO语句是正确的,您可以执行以下操作:
$date = date('Y-m-d H:i:s');
$stmt->bindParam(':time_added', $date, PDO::PARAM_STR);
Run Code Online (Sandbox Code Playgroud)
小智 5
我看到的答案都没有解决问题!
所以有一些我的发现:没有办法如何强制PDO将MySQL函数调用作为查询值传递 - 所以没有办法做简单的包装器,它能够使用NOW()或任何其他函数传递值.每次需要这样的东西时,都需要手动更改查询,因此函数调用是查询字符串的一部分.:-(
我正在使用测试我正在使用的MySQL函数的给定值的函数并修改查询本身,但它不是我的观点的一个很好的解决方案...: - }
除了 NOW() 之外,我还利用“timestamp”类型列并将其默认设置为 CURRENT_TIMESTAMP ..所以我只为该字段传递任何内容,时间会自动设置。也许不正是您想要的。