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 フィールドでは機能しません。
  • パールを使用 -$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 に答える