问题描述
||
有人可以指出我正确的方向/网站吗
PHP中有一种方法可以通过比较FORM中的字段名称和数据库中的column_name来动态更新特定表。
例如
输入名称= \“电子邮件地址\”
和
数据库列名称为email_address
我发现了一些东西,但我认为它并不那么灵活。
解决方法
我有类似的东西,而且真的很稳定。
您要做的就是获取
您桌子上的留言,以及
生成您的输入字段
动态地
然后,将其重新发布后,将所有内容分解为一个字符串。检查收到的列名是否与您的表中的列名匹配,并同时内插值。 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 __ *
希望你能明白。
,应该可以仅从POST超级全局获取它们的密钥,但要考虑所涉及的安全风险。请记住,您的用户正在提交表单,他可以轻松创建一个名为rights
的假输入字段,并为自己授予管理员权限!
如果仍然要使用它,则解决方案很简单。循环发布,获取键和值并将其附加到SQL查询中;因此:
$sql = \"UPDATE user SET \";
foreach($_POST as $key => $value)
$sql .= $key . \" = \" . $value . \',\';
$sql = substr($sql,-1); //Remove the last comma