更新MySQL记录时如何不包含空白字段

时间:2011-11-30 23:20:59

标签: php mysql forms sql-update

如何在MySQL更新查询中不包含表单的文本字段?我理解为什么它用空字符串替换填充字段,但我不确定一种有效的方法来修复它。最好的选择真的只是很多if语句吗?是否有某种功能可用于禁止我的html表单中的空白字段?

这是我到目前为止所拥有的:

//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的字段,价格将会更新,但名称将设置为空字符串。< / p>

3 个答案:

答案 0 :(得分:5)

您可以在SQL中检查字符串是否为空:

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

答案 1 :(得分:0)

如果你在php中构建更新字符串,那么如果它是空的,你也可以用不同的方式构建它:

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

答案 2 :(得分: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);