【发布时间】:2017-04-04 03:06:27
【问题描述】:
我有这个表格
<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."'";
我不明白的是我如何在查询代码中动态地做到这一点
*表单域的名称与变量 i 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)."'
【问题讨论】:
标签: php mysql forms variables dynamic