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

Php 更新MySQL记录时如何不包含空白字段,php,mysql,forms,sql-update,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(

我如何在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
,则价格将更新,但名称将设置为空字符串。

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

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

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

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

试试这样的

$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);

在这些if语句中,您不需要花括号。这非常有意义!我对SQL比较陌生,所以这真的很有帮助。谢谢关于实际发生了什么的快速问题-IF语句中的中间表达式是什么意思?我知道,如果变量不是空字符串,它会返回变量,但返回字段名有什么作用?@timmo:它会将字段设置为其原始值(换句话说,它不会更改它)。您可以为player编程