[英]How to prepare a MySQL query using a variable length parameter list in 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.