[英]PDO how do I set a datetime value to NULL in a prepared statement?
我試圖使用PDO清除datetime字段的值時出錯。 問題是當prepare語句引用字符串時傳遞NULL值,然后SQL返回錯誤
Example:
//Test Values
$_POST['FromDate'] = 'NULL';
$_POST['ToDate'] = '20140905';
//Update statement
$SQLQuery = "UPDATE A
SET
FromDate = :FromDate
,ToDate = :ToDate
FROM dbo.TEST AS A
WHERE
ID = 1 ";
//User Params
$UserParams = array(':FromDate' => $_POST['FromDate']
,':ToDate' => $_POST['ToDate']
);
//Run the query
$s = $handler->prepare($SQLQuery);
$s->execute(array($UserParams));
然后SQL查詢返回錯誤,因為'NULL'是一個字符串而FromDate是DATETIME。 它需要為NULL而不是'NULL'
UPDATE A
SET
FromDate = 'NULL'
etc...
如果要手動將其設置為NULL
則不要混淆post變量。
只需將其硬編碼為PHP null對象(當然不是字符串'NULL'
)
$stmt = $handler->prepare($SQLQuery);
$success = $stmt->execute(array(':FromDate' => NULL,
':ToDate' => $_POST['ToDate']
));
if($success) {
echo 'updated!';
} else {
echo 'failed';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.