gpt4 book ai didi

php - 从 PHP 发布的表单中清理和构建查询的更快方法

转载 作者:行者123 更新时间:2023-11-29 05:40:29 24 4
gpt4 key购买 nike

我有一个包含 100 多个字段(其中大部分是复选框)的表单,虽然并非每个字段都总是被填写,但会有很多。键入每个字段以清理和构建 MySQL 查询的想法让我哭了,所以我认为必须有一种方法可以使用 PHP 循环来完成此操作。

我设法在不写出 $_POST 数组中的每个元素的情况下清理表单,并将其以 $key=>$value 的形式存储在 $formarray 中。 $key 不是数字或顺序的,需要保留。 $key 的值与要写入 $value 的数据库表中的列名相同。

我希望能够构建 MySQL 查询以使用 PHP 循环将 $formarray 的内容插入到 MySQL 表中。这可能吗?

最佳答案

这是可能的,但不推荐,除非你非常小心。确保这种循环方法安全可能会消耗与为所有表单字段输入所有内容一样多的时间,但您的解决方案将更加稳健和模块化。

您应该创建一个映射数组,其中包含有关验证和格式化特定值的指令,如下所示:

$validator = array(
'user_name' => array('mask' => "'%s'", 'escape' => true, 'boolean' => false),
'user_age' => array('mask' => "%d", 'escape' => false, 'boolean' => false),
'has_car' => array('mask' => "%d", 'escape' => false, 'boolean' => true)
);

然后你迭代这个验证器数组,并检查你发布的数据中是否存在该键,并对值应用指令,并将所有 SQL 集收集到一个单独的数组中:

$set = array();
foreach ($_POST as $key => $dirs)
{
if ($dirs['boolean'])
{
$val = isset($_POST[$key]) ? 1 : 0;
$set[] = sprintf("%s=".$dirs['mask'],$key,$val);
}
elseif (isset($_POST[$key]))
{
$val = $dirs['escape'] ? addslashes($_POST[$key]) : $_POST[$key];
$set[] = sprintf("%s=".$dirs['mask'],$key,$val);
}
}

在此之后,您可以通过内爆集合来创建查询:

$sql = "INSERT INTO table SET ".implode(",",$set);

我上面的方法可能不适合您的实际需要,但更像是一个概念,您可以使用它来处理服务器端的大型表单。您可以定义更复杂的验证,并使其也能处理数组,而不仅仅是像本例那样的复选框和文本字段。

时刻保持警惕,您的表格是通往您宝贵数据的大门,如果您贪小便宜,您会后悔的!

关于php - 从 PHP 发布的表单中清理和构建查询的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7149589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com