如何在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,则价格将被更新,但名称将被设置为空字符串。
发布于 2011-12-01 07:26:30
您可以检查SQL中的字符串是否为空:
UPDATE Item_t
SET Item_Name = IF('$itemname' = '', Item_Name, '$itemname'),
Item_Price = IF('$itemprice' = '', Item_Price, 'itemprice')
WHERE Item_Id='$itemid'发布于 2011-12-01 07:28:11
如果你在php中构建更新字符串,如果它是空的,你也可以用不同的方式构建它:
$update = "UPDATE Item_t SET ".($itemname ? "Item_Name='$itemname', " : "")."Item_Price='$itemprice' WHERE Item_Id='$itemid'";发布于 2011-12-01 07:44:01
试试这样的东西。
$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);https://stackoverflow.com/questions/8334437
复制相似问题