使用php mysql忽略更新中的空白字段

时间:2014-12-24 07:39:56

标签: php mysql

我需要一些帮助才能更新mysql。我不希望空白/空输入字段更新,但当我将它们保持空白或空白时,它会自动更新字段

这是我的代码

$sql="UPDATE `tblsitesetup` SET
    `site_name` = '".mysqli_real_escape_string($conn,$sitename_new)."',
    `site_hometitle` = '".mysqli_real_escape_string($conn,$sitetitle_new)."',
    `site_homedescrp` = '".mysqli_real_escape_string($conn,$final_description)."',
    `site_homekeywords` = '".mysqli_real_escape_string($conn,$final_keywords)."',
    `site_analytics` = '".mysqli_real_escape_string($conn,$final_analytics)."',
    `site_ad1` = '".mysqli_real_escape_string($conn,$final_ad1)."',
    `site_ad2` = '".mysqli_real_escape_string($conn,$final_ad2)."',
    `site_ad3` = '".mysqli_real_escape_string($conn,$final_ad3)."'
    WHERE `site_id` = '1'";
    $result=mysqli_query($conn,$sql);

3 个答案:

答案 0 :(得分:0)

正确的方法是不将这些项目放在查询中 所有:

$updates = array();
if (!empty($sitename_new))
  $updates[] = 'sitename_new="'.mysql_real_escape_string($sitename_new).'"';
if (!empty($sitetitle_new))
  $updates[] = 'sitetitle_new="'.mysql_real_escape_string($sitetitle_new).'"';
 // .......
 // ....... fill all cases here
$updates = implode(', ', $updates);

$sql = "UPDATE tblsitesetup` SET $updates WHERE `site_id` = '1'";

显然,将更改放在关联数组或对象中,然后遍历它们会更清晰。

参考:mysql update - skip blank fields?

答案 1 :(得分:0)

$update=array('site_name'=>$sitename_new
            'site_hometitle' => $sitetitle_new
 /* etc ... */
           'site_ad3' => $final_ad3 );
$sets=array();
foreach($update as $field => $value )
  if( "$value" != "" )
    $sets[]="`$field` = ". mysqli_real_escape_string($conn,$field);

if($sets) 
{
  $sql="UPDATE `tblsitesetup` SET \n".implode(",\n",$sets)."
    WHERE `site_id` = '1'";
  $result=mysqli_query($conn,$sql);
}
else
{
  $result=NULL;
}

答案 2 :(得分:-1)

使用if语句构建SQL字符串:

$ sql ='UPDATE TABLE SET';

if(trim($ field)!='')$ sql。='FIELD = $ field';

依旧...... 确保最后有一个有效的SQL语句。