我有这个数据库方案:http://i54.tinypic.com/k9hzc.png
如您所见,我有三列(id, settings_name, settings_value)
在我的网站上,我有一个表单。虽然,我有一个问题更新单个单元格。例如:
$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"到从表单提交的值?
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());
}
UPDATE settings SET settings_value = '$sitename' WHERE setting_name = 'sitename';
当然,你也可以为别人做这件事:
UPDATE settings SET settings_value = '$sitedescription' WHERE setting_name = 'sitedescription';
创建一个数组,其中每个数组键为字段名。
$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'