我有这个数据库方案: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”到表格提交的价值?
答案 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());
}
这是最快的方式,它会从表单更新任何密钥。