我需要进行如下查询:
UPDATE screening
SET maileddate = NOW(),
reference = '{$reference[$user_id]}'
WHERE user_id IN(....)
我想做判断,当引用[$ user_id]为空时,引用[$ user_id] = NULL。 我的代码是:
if(empty($reference[$user_id]) || $reference[$user_id] == ''){
$reference[$user_id] = NULL;
}
但是当我执行查询时,如果$ reference [$ user_id]为空,则数据库中的引用值为空但不为null。我应该怎么做才能使它成为空?感谢
答案 0 :(得分:2)
如果变量为空,您可能需要将NULL
作为字符串传递给MySQL。使用不同的变量来保存可能的NULL内容并引用非null内容。别忘了逃避它:
$refid = empty($reference['user_id']) ? "NULL" : "'" . mysql_real_escape_string($reference['user_id']) . "'";
UPDATE screening SET maileddate = NOW(), reference = '{$refid}'
WHERE user_id IN(....)
答案 1 :(得分:0)
只需将其设为字符串即为空。如果它为空$reference[$user_id] = 'null';
哦,对于查询,你应该使用reference IS null {$reference[$user_id]}
而不是等号
答案 2 :(得分:0)
在没有看到其他代码的情况下,我的猜测是它与reference = '{$reference[$user_id]}'
在单引号中{$reference[$user_id]}
有关。 MySQL将会看到数据库中的内容。因此,如果$reference[$user_id]
打印为空(因为它为空),则查询的那一位将是reference = ''
而不是reference = NULL
。对于在查询中使用的变量,您需要使用关键字NULL而不是实际值NULL。
举个例子:
$query = "UPDATE screening " .
"SET maileddate = NOW(), " .
"reference = " . ($reference[$user_id] === NULL ? 'NULL ' : "'{$reference[$user_id]}' ") .
"WHERE user_id IN(....)";
答案 3 :(得分:0)
$reference = 'reference = ';
$reference .= ' empty($reference[$user_id]) ? 'NULL' : "'". mysql_real_escape_string($reference[$user_id]) . "'";
$query = "UPDATE screening
SET maileddate = NOW(),
$reference
WHERE user_id IN(....)";
答案 4 :(得分:-1)
试试这个:
$user_id = empty($reference[$user_id]) ? 'NULL' : $reference[$user_id];
$sql = "UPDATE screening
SET maileddate = NOW(),
reference = " . $user_id . "
WHERE user_id IN(....)";