2011-11-30 60 views
2

如何在MySQL更新查詢中不包含空白表單的文本字段?我明白爲什麼它用空字符串替換填充字段,但我不確定是否有效解決問題。 if陳述中的最佳選項真的只有很多嗎?是否有某種功能可以用來禁止我的html表單中的空白字段?如何在更新MySQL記錄時不包含空白字段

這是我到目前爲止有:

//Check if record exists 
if(mysql_num_rows(mysql_query("SELECT Item_Id FROM Item_t WHERE Item_Id = '$itemid'")) == 0){ 
    die('The Item ID you entered was not found. Please go back and try again.'); 
    } 

//Update record 
$update = "UPDATE Item_t SET Item_Name='$itemname', Item_Price='$itemprice' WHERE Item_Id='$itemid'"; 
mysql_query($update); 

因此,基本上,在這個例子中,如果你離開,設置$itemname空白,只是更新$itemprice領域,價格將被更新,但這個名字會設置爲空字符串。

回答

4

您可以檢查您的字符串是在SQL空:

UPDATE Item_t 
SET Item_Name = IF('$itemname' = '', Item_Name, '$itemname'), 
    Item_Price = IF('$itemprice' = '', Item_Price, 'itemprice') 
WHERE Item_Id='$itemid' 
+0

完美感!我對SQL比較陌生,所以這非常有用。謝謝!快速詢問實際情況 - IF語句中的中間表達意味着什麼?我明白,如果變量不是一個空字符串,它會返回變量,但返回字段名稱是幹什麼的? – timmo

+0

@timmo:它將字段設置爲其原始值(換句話說,它不會改變它)。 –

+0

你可以在這些if語句中編程播放器 – humphrey

0

如果要構建在PHP中更新的字符串,你可能也只是建立不同的看法,如果它是空的:

$update = "UPDATE Item_t SET ".($itemname ? "Item_Name='$itemname', " : "")."Item_Price='$itemprice' WHERE Item_Id='$itemid'"; 
0

嘗試這樣的事情。

$strSet = ''; 


//make sure to sanitize your inputs first, then do this.... 
if(Item_Name != ''){ $strSet .= 'Item_Name=\'$itemname\','}; 
if(Item_Price != ''){ $strSet .= 'Item_Price=\'$itemprice\','}; 

//removes trailing comma 
$strSet = substr($strSet,0,-1); 

//Update record 
$update = "UPDATE Item_t SET " . $strSet . " WHERE Item_Id='$itemid'"; 
mysql_query($update); 
+0

,你不需要大括號。 – Flukey

+0

謝謝,整天都在看模板 – 2011-11-30 23:54:50

相關問題