簡體   English   中英

如何在MySQL查詢中添加數組變量參數?(PHP)

[英]How to add a array variable parameter in mysql query?(PHP)

我需要像這樣的查詢:

  UPDATE screening
                 SET maileddate = NOW(),
                     reference = '{$reference[$user_id]}'
                     WHERE user_id IN(....)

我想做一個判斷,當reference [$ user_id]為空時,reference [$ user_id] = NULL。 我的代碼是:

    if(empty($reference[$user_id]) || $reference[$user_id] == ''){
        $reference[$user_id] = NULL;
     }

但是,當我執行查詢時,如果$ reference [$ user_id]為空,則數據庫中reference的值為空,但不為null。 我應該怎么做才能使其為空? 謝謝

如果變量為空,則可能需要將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(....)

只是將其設置為一個字符串,說為null。 如果為空,則$reference[$user_id] = 'null';

哦,同樣在查詢中,您應該使用reference IS null {$reference[$user_id]}而不是等號

沒有看到您的其余代碼,我想這與reference = '{$reference[$user_id]}'與單引號中的{$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(....)";
$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(....)";

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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