基本的なSQL文字列作成ツールを使用していますが、3値演算子を使用してNULL値または日付時間の値を条件付きで入力しようとしています。MS SQL Serverの日付付きPHP 3値演算子
すべての値が存在する場合のupdate文の基本構文です。
UPDATE tblRecvLog
SET ScheduledTime = 'datetime',
ScaleInTime = 'datetime',
SampleToLabTime = 'datetime',
ScaleWeight = 'weight',
SealTop = 'sealnumber',
SealBottom = 'sealnumber'
WHERE pkRecvLogID = 'uniqueid';
私はAjaxのポストからこれらの値を受けていますし、彼らは私の$ _POSTデータ内の有効な値だ、符号化と復号化のすべてが適切に行われています。フォームにdatetimeが指定されておらず、ユーザーがテーブルレコードへの更新を送信すると、データベースにNULL値を書きたいと思います。私は正しくこの作業を行うために私の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サーバーのための「」に包まする必要があります。 。
- 「私の使用して、「それは混乱作っている
今、私はそれで私はmはこの方法を探していますということ他の値をヌルとして格納する理由があり、foreachがそれに値する可能性があります。明日のテストの後に戻ってきます。ありがとう、 – Lucretius
別の代替、ヘルパー関数: 'function null_or_val($ v){return $ v == '' || is_null($ v)? "NULL": "'"。$ val。 "'"; } '。 '... myField =" .null_or_value($ myField) "のように使うことができます。 ... ' – ccKep