gpt4 book ai didi

php POST表单查询更新动态变量

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

我有这个表格

<form method="post" action="process.php">
Name: <input type="text" name="name" value="">
<br />
English: <input type="text" name="english" value="">
<br />
French: <input type="text" name="french" value="">
<br />
<input type="submit" name="submit" value="Submit">
</form>

我们在 process.php 上进行此查询

$query = "
UPDATE
`translations_structure`
SET
`updated_on` = '".time()."',
`english` = '".utf8_encode($english)."',
`french` = '".utf8_encode($french)."'
WHERE
`id` = '".$id."'";

如果我编辑表格语言并添加更多语言,表单将动态修改为这个示例

<form method="post" action="process.php">
Name: <input type="text" name="name" value="">
<br />
English: <input type="text" name="english" value="">
<br />
French: <input type="text" name="french" value="">
<br />
Spanish: <input type="text" name="spanish" value="">
<br />
German: <input type="text" name="german" value="">
<br />
<input type="submit" name="submit" value="Submit">
</form>

以及我需要动态编辑的查询

$query = "
UPDATE
`translations_structure`
SET
`updated_on` = '".time()."',
`english` = '".utf8_encode($english)."',
`french` = '".utf8_encode($french)."',
`spanish` = '".utf8_encode($spanish)."',
`german` = '".utf8_encode($german)."'
WHERE
`id` = '".$id."'";

我不明白的是我如何在查询代码中动态地实现这一点

*表单字段的名称与我 POST 的变量名称相同
*表中列的名称与 POST 的名称相同

    `english` = '".utf8_encode($english)."',
`french` = '".utf8_encode($french)."',
`spanish` = '".utf8_encode($spanish)."',
`german` = '".utf8_encode($german)."',
`other_language` = '".utf8_encode($other_language)."',
`other_language2` = '".utf8_encode($other_language2)."'

上面我已经解释了如何进行查询,但我无法理解如何编写变量

我知道我需要什么有点困难,但也许有人理解我需要什么

谢谢

此行上方是已编辑的消息,因为有人标记了此消息已回复

<小时/>




我先解释一下我想做什么:

我有一个名为“翻译”的表,用于存储语言。例如:英语、法语、西类牙语等
我使用表单来更新新值,问题是我想动态地执行此操作,而不是手动在每个 php 文件上插入此查询,因为语言表会增长或编辑,并且我想动态地工作而不是编辑每个 php 文件.
变量名称与数据库中的字段名称相同我设法为表翻译上的名称创建一个数组

这就是我到目前为止所拥有的使其动态化的方法问题是我不知道如何在查询 $_POST['english']、$_POST['french'] 等中插入变量

$db = new DB();
$query = $db->query("SELECT * FROM `translations_languages` ORDER BY `name` ASC");
while($row = $query->fetch_assoc()){
$values[] = "`{$row['name']}` = '{$row['name']}'";
}

$dynamic_result = "".strtolower(implode(",", $values))."";
$query = "
UPDATE
`translations_structure`
SET
`updated_on` = '".time()."',
$dynamic_result
WHERE
`id` = '".$id."'
";

echo "$query";

这就是查询通常的样子

$query = "
UPDATE
`translations_structure`
SET
`updated_on` = '".time()."',
`english` = '".utf8_encode($english)."',
`french` = '".utf8_encode($french)."',
`spanish` = '".utf8_encode($spanish)."'
WHERE
`id` = '".$id."'";

我想将这些值添加到查询中

`english` = '".utf8_encode($english)."',
`french` = '".utf8_encode($french)."',
`spanish` = '".utf8_encode($spanish)."'

最佳答案

你只需要创建一个动态更新数组。像这样的事情:

$languagesToUpdate = array();

// this is an example, you should modify as your script:

// create a variable/constant to make sure you update only allowed fields
$allowedLanguages = array('english' => true, 'french' => true, 'spanish' => true, 'german' => true, 'other_language' => true);

// iterate threw post and check for allowed languages and add to languagesToUpdate the language we need to update with it's value
foreach ($_POST as $post => $value) {
if (isset($allowedLanguages[$post]) && $allowedLanguages[$post]) {
$languagesToUpdate[] = '`' . $post . '` = "' . utf8_encode($value) . '"';
}
}

// add additional data like updated_on
$languagesToUpdate[] = '`updated_on` = ' . time() . '';

//update database
$db = 'UPDATE `translations_structure` SET '.implode(', ', $languagesToUpdate).' WHERE `id` = '.(int)$id;

// this will produce something like this:
// UPDATE `translations_structure` SET `english` = "English text", `spanish` = "Spanish text", `updated_on` = 1479720637 WHERE `id` = 1

关于php POST表单查询更新动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710912/

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