簡體   English   中英

PDO如何在預准備語句中將datetime值設置為NULL?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM