有人可以指出我在正确的方向/网站
在PHP中,如何通过比较FORM中的字段名称和数据库中的column_name来动态更新特定表。
e.g
输入名称= “email_address”
和
数据库列名称为 email_address
我发现了一些东西,但在我看来并不那么灵活......
答案 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