PHP - 更新单个单元格WHERE单元格

时间:2011-09-09 14:10:25

标签: php mysql cell

我有这个数据库方案:http://i54.tinypic.com/k9hzc.png

如您所见,我有三列(id,settings_name,settings_value)

在我的网站上,我有一张表格。虽然,我在更新SINGLE单元时遇到了问题。例如:

         $sitename = inputFilter($_POST['sitename']);
         $sitedescription = inputFilter($_POST['sitedescription']);
         $siteurl = inputFilter($_POST['siteurl']);
         $siteemail = inputFilter($_POST['siteemail']);
         $maintenance = inputFilter($_POST['maintenance']);
         $maintenance_text = inputFilter($_POST['maintenance_text']);
         $activitylimit = inputFilter($_POST['activitylimit']);


         //No error found, save the users settings.
         mysql_query("UPDATE settings SET settings_value='$sitename', sitedescription='$sitedescription', siteurl='$siteurl', siteemail='$siteemail', maintenance='$maintenance', maintenance_text='$maintenance_text', activitylimit='$activitylimit'")
         or die(mysql_error());

正如您所看到的,这里的错误是没有名为“sitename,siteurl等”的列,但是,有单元格,这些列名为this。

我的问题是,如何更新ex。 “sitename”到表格提交的价值?

3 个答案:

答案 0 :(得分:0)

创建一个数组,其中每个数组键都是字段名。

$valid_data = array(
    'settings_value' => inputFilter($_POST['sitename']),
    'sitedescription' => inputFilter($_POST['sitedescription']),
    // etc ...
);

foreach ($valid_data as $k => $v)
    $values[] = $k.'=\''.$v.'\'';
if (!empty($values) 
    mysql_query("UPDATE settings SET ".join(',', $values));

如果您提交“sitename”,则查询将变为:

UPDATE settings SET settings_value='submiten value'

答案 1 :(得分:0)

UPDATE settings SET settings_value = '$sitename' WHERE setting_name = 'sitename';

然后,当然,你可以为其他人做到这一点:

UPDATE settings SET settings_value = '$sitedescription' WHERE setting_name = 'sitedescription';

答案 2 :(得分:0)

foreach($_POST as $key => $value)
{
   $value = inputFilter($value);
   mysql_query("UPDATE settings SET settings_value='$value' where setting_name='$key' limit 1")
         or die(mysql_error());
}

这是最快的方式,它会从表单更新任何密钥。