7

我正在尝试这样做:

$sth = $dbi->prepare('INSERT INTO table VALUES (?, ?, ?)');
$sth->execute(
    $var1,
    $var2 || 'NOW()',
    $var3
);

没有任何运气。有任何想法吗?

4

3 回答 3

14
$sth = $dbi->prepare('INSERT INTO table VALUES (?, COALESCE(?, NOW()), ?)');
$sth->execute(
    $var1,
    $var2,
    $var3
);
于 2010-02-09T17:00:14.463 回答
3

函数不能绑定参数。MySQL 会将它们括在引号中,这是无效的语法。

您的选择是:

  • DEFAULT CURRENT_TIMESTAMP - 如果该字段是 TIMESTAMP 字段,您可以像这样声明它具有当前时间的默认值。这不适用于 DATETIME 字段。
  • 使用 perl -$now = time2str('%Y-%m-%d %T', time);
于 2010-02-09T16:57:58.317 回答
2

您也可以使用以下编码。

$sth = $dbi->prepare('INSERT INTO table VALUES (?, COALESCE(?, NOW()), ?)');
$sth->bind_param($var1,$var2,$var3); 
$sth1=$sth->execute;
于 2010-03-02T05:00:26.183 回答