2011-09-23 27 views
0

我需要做這樣的查詢:?如何在MySQL查詢添加一個數組變量參數(PHP)

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; 
    } 

但是,當我執行查詢,如果參考$ [$ USER_ID]是空的,參考在數據庫中的值是空的,但不是零。我該怎麼做才能使它變爲空?謝謝

+2

最後一部分還不清楚。你能說另一種方式嗎? –

回答

0

只是讓它成爲一個字符串說null。如果它是空$reference[$user_id] = 'null';

哦,還應該使用reference IS null {$reference[$user_id]}而不是等於查詢簽訂

+0

我在數據庫中得到了字符串值'null',而不是NULL –

+0

呵呵,這改變了一切。然後,只要執行if語句來說明它是否爲null,將其設置爲'null',然後保留'reference = {$ reference [$ user_id]}' – Michael

+0

等待,現在我很困惑...您要保存字符串'空'到數據庫或將值保存到數據庫? – Michael

0

沒有看到你的代碼的其餘部分,我的猜測是它有事情做與單有{$reference[$user_id]}reference = '{$reference[$user_id]}'引號。 MySQL將會看到數據庫中應該存在的內容。因此,如果$reference[$user_id]作爲空白打印出來(因爲它是NULL),那麼您的查詢的那一位將是reference = ''而不是reference = NULL。您需要使用關鍵字NULL而不是實際值NULL作爲您在查詢中使用的變量。

舉個例子:

$query = "UPDATE screening " . 
      "SET maileddate = NOW(), " . 
       "reference = " . ($reference[$user_id] === NULL ? 'NULL ' : "'{$reference[$user_id]}' ") . 
       "WHERE user_id IN(....)"; 
+0

你能否給我一個做什麼的例子? –

+0

用一個例子編輯我的答案 – jprofitt

-1

試試這個:

$user_id = empty($reference[$user_id]) ? 'NULL' : $reference[$user_id]; 
$sql = "UPDATE screening 
       SET maileddate = NOW(), 
        reference = " . $user_id . " 
        WHERE user_id IN(....)"; 
+0

這會將'reference'列設置爲空字符串而不是NULL –

+0

現在我想,沒關係。 – Scoutman

2

您可能需要通過NULL作爲一個字符串到MySQL如果變量是空的。使用其他變量來保存可能的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(....) 
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(....)"; 
相關問題