首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在更新MySQL记录时不包括空白字段

问如何在更新MySQL记录时不包括空白字段
EN

Stack Overflow用户
提问于 2011-12-01 07:20:59
回答 3查看 2.7K关注 0票数 2

如何在MySQL更新查询中不包含留空的表单的文本域?我理解为什么它用空字符串替换填充字段,但我不确定有没有有效的方法来修复它。最好的选择真的只需要大量的if语句吗?有没有什么函数可以用来禁止html表单中的空白域?

这是我到目前为止所知道的:

代码语言:javascript
复制
//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,则价格将被更新,但名称将被设置为空字符串。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-01 07:26:30

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

代码语言:javascript
复制
UPDATE Item_t
SET Item_Name = IF('$itemname' = '', Item_Name, '$itemname'),
    Item_Price = IF('$itemprice' = '', Item_Price, 'itemprice')
WHERE Item_Id='$itemid'
票数 5
EN

Stack Overflow用户

发布于 2011-12-01 07:28:11

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

代码语言:javascript
复制
$update = "UPDATE Item_t SET ".($itemname ? "Item_Name='$itemname', " : "")."Item_Price='$itemprice' WHERE Item_Id='$itemid'";
票数 0
EN

Stack Overflow用户

发布于 2011-12-01 07:44:01

试试这样的东西。

代码语言:javascript
复制
$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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8334437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档