gpt4 book ai didi

php - 将整个表单循环到 MySQL 数据库行中?

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

我希望有人能为我面临的挑战提供建议。我不确定我是否能够按照我设想的方式做到这一点,因此向更有经验的人寻求建议。

我有一个大约有 20 列的数据库表。这是很多专栏,不幸的是我无法改变它。目标是获取表单提交并将其插入到该表中。所以我所拥有的是,字段名称与数据库中的列名称相同。

为了尝试保持代码更简洁,我想只提取整个表单(键和值),而不是执行传统的 $varWhatever = $_POST['whatever']; 20次。使用这样的东西: foreach ($_POST as $key => $value)

现在我的问题是,如果可能的话,如何运行 foreach 循环,以便将键和值放入单个 SQL 语句中?

"INSERT INTO table_name (Loop all keys here) VALUES (Loop related values here)"

这是否可能,或者我应该回到上面提到的更传统的方式?

我想到的一种方法是,在开始循环之前,我可以创建空行并获取它的 ID,然后在循环中,我可以对与 ID 匹配的行运行更新查询。虽然听起来很草率。

最佳答案

这是我想出的一个解决方案。您首先必须定义一个字段名称数组,充当预期输入的白名单。然后,您只需循环该数组即可构建参数数组来绑定(bind)提交的值。并在构建查询时用逗号内爆数组。

$fields = array('field1','field2','field3');

$binds = array();
foreach ($fields as $field) {
$binds[":$field"] = $_POST[$field];
}

$sql = "INSERT INTO table_name (" . implode(',',$fields) . ") VALUES (" . implode(',',array_keys($binds)) . ")";

$db->prepare($sql);
$db->execute($binds);

这假设您正在使用 PDO。

关于php - 将整个表单循环到 MySQL 数据库行中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37311184/

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