我試圖做到這一點:如何在準備好的語句中將MySQL函數作爲綁定參數傳遞?
$sth = $dbi->prepare('INSERT INTO table VALUES (?, ?, ?)');
$sth->execute(
$var1,
$var2 || 'NOW()',
$var3
);
沒有任何的運氣。有任何想法嗎?
我試圖做到這一點:如何在準備好的語句中將MySQL函數作爲綁定參數傳遞?
$sth = $dbi->prepare('INSERT INTO table VALUES (?, ?, ?)');
$sth->execute(
$var1,
$var2 || 'NOW()',
$var3
);
沒有任何的運氣。有任何想法嗎?
$sth = $dbi->prepare('INSERT INTO table VALUES (?, COALESCE(?, NOW()), ?)');
$sth->execute(
$var1,
$var2,
$var3
);
函數不能綁定參數。 MySQL將把它們用引號括起來,這是不合法的語法。
的選項有:
$now = time2str('%Y-%m-%d %T', time);
你一定是在開玩笑......爲自己設計日期字符串並不需要你改變語言。首先要介意的是'use Date :: Format; $ now = time2str('%Y-%m-%d%T',time);',但是可能有一種更快更簡單的方法來完成它,我忘記了。 – 2010-02-10 11:49:38
@Dave:啊,你知道我完全錯過了這是一個Perl問題,而不是PHP的問題。語法如此相似。我會更新我的問題以符合您的建議。謝謝。 – hobodave 2010-02-10 18:38:53
您可以使用下面的代碼也。
$sth = $dbi->prepare('INSERT INTO table VALUES (?, COALESCE(?, NOW()), ?)');
$sth->bind_param($var1,$var2,$var3);
$sth1=$sth->execute;
+1:聰明。我總是忘記凝聚。我甚至不知道它會在這方面起作用。 – hobodave 2010-02-09 17:02:09
不錯!謝謝。如果只有我可以設置'日期時間'列的默認值。 – aidan 2010-02-09 17:03:49
請注意'coalesce'實際上等同於'//',而不是'||'。但是,如果'$ var2'從不包含空字符串或0,它可能足以滿足您的要求。 – cjm 2010-02-09 20:29:35