动态更新用于fieldname / column_name的MySQL / PHP

时间:2011-05-23 12:58:15

标签: php mysql database forms

有人可以指出我在正确的方向/网站

在PHP中,如何通过比较FORM中的字段名称和数据库中的column_name来动态更新特定表。

e.g

输入名称= “email_address”

数据库列名称为 email_address

我发现了一些东西,但在我看来并不那么灵活......

2 个答案:

答案 0 :(得分:4)

我有类似的东西,而且非常稳定。

你所要做的就是获得    你桌子上的颜色,和    生成输入字段    动态 然后,当它被发回时,将所有内容整理成一个字符串。检查收到的coloumn名称是否与表中的名称相匹配,并且还会破坏值。 Add_slashes并转义任何引号或其他可能的sql注入字符。

以下代码是我用于MASSIVE项目的代码。

$postvars = $_POST;
 $q = "replace into `".$opertable."`
    (
    `".(implode('`,`',(remove__v(array_keys($postvars)))))."`)
        values
    (
    '".(implode('\',\'',$postvars))."')";

remove__v删除了一些验证技巧并使用下面的函数提交按钮等

function removeObj($array) {
  foreach($array as $key => $value) {
    if (substr_count($key,'obj__')) unset($array[$key]);
  }
  return $array;
}

我的所有输入按钮都命名为obj __ *

希望你明白这一点。

答案 1 :(得分:2)

应该可以从POST超全局获取密钥,但要考虑所涉及的安全风险。请记住,您的用户正在提交表单,他可以轻松创建一个名为rights的虚假输入字段,并授予管理员权限!

如果您仍想使用它,解决方案很简单。循环遍历帖子,获取密钥和值并将其附加到SQL查询;就这样:

$sql = "UPDATE user SET ";
foreach($_POST as $key => $value)
    $sql .= $key . " = " . $value . ',';

$sql = substr($sql,0,-1);       //Remove the last comma