gpt4 book ai didi

php - 如何在动态生成表单的地方插入数据库值

转载 作者:行者123 更新时间:2023-11-29 01:55:07 25 4
gpt4 key购买 nike

用于填充数据库的表单必须与数据库中的各个字段保持同步。

因此需要一个动态表单域:

<table>
<tr>
<th>Intermediate</th>
<th>Advanced</th>
<th>No selection</th>
</tr>
<?php
$sth = $dbh->prepare("SELECT SkillName FROM Skill");
$sth->execute();
$tempCounter = 1;

while($row = $sth->fetch()) {
echo ("<tr>
<td colspan=\"3\">
<label for=\"td".$tempCounter."\">".$tempCounter.". ".$row['SkillName']."</label>
</td>
</tr>");

echo ("
<tr>
<td>
<input type=\"radio\" name=\"".$row['SkillName']."\" id=\"tdA".$tempCounter."\" value=\"1\"/>
</td>
<td><input type=\"radio\" name=\"".$row['SkillName']."\" id=\"tdB".$tempCounter."\" value=\"2\"/>
</td>
<td><input type=\"radio\" name=\"".$row['SkillName']."\" id=\"tdC".$tempCounter."\" value=\"\" /></td>
</tr>");
$tempCounter++;
}
?>
</table>

但是,当不清楚数据可能是什么(特别是 SkillName)时,我不知道如何将数据插入数据库

在伪代码中它将是 ("INSERT INTO PersonSkill (PersonID, SkillName, SkillValue) values ($personid, $skillname, $skillvalue)")

其中 $personid 已经定义,$skillname 在编写表单时未知,$skillvalue 是一个整数。

因此,如果 HTTP header 信息可能类似于

 - [personid] => 101
- [firstaid] => 2
- [swimming] => 1
- [mechanics] => 0
- [firearms] =>
- [athletics] => 2

我如何迭代这些值?我总是可以使用数据库本身来预测这些值,但最后一 block 拼图让我望而却步......

while($row = $sth->fetch()) {
if (isset($_POST[''.$row['SkillName'].'']))
// And er... save some variable at this point I suppose, or perhaps append to an array...
}

最佳答案

将您的技能 输入转换为数组:

<input type=\"radio\" name=\"skill[".$row['SkillName']."\]" id=\"tdA".$tempCounter."\" value=\"1\"/>

因此您可以在它发布到的页面中构建您的查询(因为我从阅读对您问题的评论中了解到您这样做):

$query = '
INSERT INTO
PersonSkill
(
"PersonID",
"'.implode('","', array_keys($_POST['skill'])).'"
)
VALUES
(
'.$personid.',
"'.implode('","', array_values($_POST['skill'])).'"
)
';

如果您将 firearms 保留为空值并为 dance 选择 2,它应该输出如下内容:

string(195) "
INSERT INTO
PersonSkill
(
"PersonID",
"firearms","dance"
)
VALUES
(
69,
"","2"
)
"

但是,如果您不想发布空值,您可以使用 array_filter清理它们:

$skills = array_filter($_POST['skill']); 

$query = '
INSERT INTO
PersonSkill
(
"PersonID",
"'.implode('","', array_keys($skills)).'"
)
VALUES
(
'.$personid.',
"'.implode('","', array_values($skills)).'"
)
';

当然,除非我误解了你。注意:这只是一个例子。至少escape你的变量。

关于php - 如何在动态生成表单的地方插入数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210963/

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