Zihnimde, aşağıdaki komut dosyası çalışması gerekir:
$stmt = $db->prepare("UPDATE table SET status = ?, date_modified = ?");
$stmt->execute(array(1, 'NOW()'));
hazırlanmış deyimi içine NOW()
geçerken ama hiçbir şey olmuyor. NOW()
Gerçek bir tarihi (yani 2010-11-23) ile değiştirilmesi gayet güzel çalışıyor.
Ben çevrimiçi açıklama bulamadı. Herhangi bir fikir?
EDIT
Sadece daha netleştirmek ve söz konusu herhangi bir karışıklık kurtulmak, aslında ANCAK hazırlanmış deyimi içine bir değişken geçmek istiyorum, değişken mysql için beş muhtemel tarih / zaman işlevleri birine ayarlanabilir olacaktır.
örneğin
$ Var = 'ŞİMDİ ()';
$var = 'LAST_DAY(DATE_ADD(CURDATE(), INTERVAL 1 MONTH))';
$ Var = 'LAST_DAY (CURDATE ())';
... Ve böylece ...
hazırlanmış deyimi dönüşür:
$stmt->execute(array(1, $var));
Ben bu aynı NULL sonuçlar dönecektir biliyorum, ama ben basitçe sql deyimini değiştirmek eğer ben endişe duyuyorum:
UPDATE table SET status = ?, date_modified = $var
Ben enjeksiyon kendimi açıyorum?