我正在做一個基本的SQL字符串生成器,我試圖使用三元操作符有條件地提供一個空值或datetime的值到語句中。PHP三元操作符與MS SQL服務器的日期
如果存在所有值,則更新語句的基本語法。
UPDATE tblRecvLog
SET ScheduledTime = 'datetime',
ScaleInTime = 'datetime',
SampleToLabTime = 'datetime',
ScaleWeight = 'weight',
SealTop = 'sealnumber',
SealBottom = 'sealnumber'
WHERE pkRecvLogID = 'uniqueid';
我從Ajax後接受這些值,而且他們有效值在我的$ _ POST數據,所有的編碼和解碼被適當地進行。當表單上沒有指定日期時間並且用戶向表記錄提交更新時,我想要向數據庫寫入空值。我想在我的sql字符串生成器中正確使用三元運算符來完成這項工作。
$sql = "UPDATE tblRecvLog SET "
. ($ScheduledTime == '') ? "ScheduledTime = NULL," : "ScheduledTime = '{$ScheduledTime}',"
. ($ScaleInTime == '') ? "ScaleInTime = NULL," : "ScaleInTime = '{$ScaleInTime}',"
. ($SampleToLabTime == '') ? "SampleToLabTime = NULL," : "SampleToLabTime = '{$SampleToLabTime}',"
. "ScaleWeight = '{$ScaleWeight}',
SealTop = '{$SealTop}',
SealBottom = '{$SealBottom}'
WHERE pkRecvLogID = '{$pkRecvLogID}'";
我不在你身邊纏繞我的頭部分:
- 日期需要被包裹在「」的SQL服務器。
- 我使用「和」正在這混亂
現在,我看它這樣我米ay有理由將其他值存儲爲空值,這使得foreach可能值得。經過一些測試後明天會回來。謝謝, – Lucretius
另一種方法,一個輔助函數:'function null_or_val($ v){return $ v ==''|| is_null($ v)? 「NULL」:「'」。$ val。「'」; }'。你可以像'... SET myField =「.null_or_value($ myField)一樣使用它。」 ...' – ccKep