2011-09-09 166 views
0

我有这个数据库方案:http://i54.tinypic.com/k9hzc.pngPHP - 更新单细胞WHERE细胞

正如你所看到的,我有三列(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”从表单提交的值?

回答

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()); 
} 

这是最快的方法,它会从窗体更新任何键。

+0

谢谢!这工作。 –

0

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

UPDATE settings SET settings_value='submiten value'

0

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)); 
如果您提交的 “网站名称” 查询变得