php - 动态添加表单字段 - pdo php msql
问题描述
我用 jquery 制作了一个动态添加的表单字段,并且效果很好,但无法制作数据库帖子。我使用 pdo php。它什么也没发布,但我不知道为什么。请帮助我,但只能使用 pdo 和准备好的语句,没有 mysqli!谢谢!
$number = $_POST['skill[]'];
if($number > 1)
{
for($i=0; $i<$number; $i++)
{
if(trim($_POST['skill[$i]'] != ''))
{
$pdoQuery = "INSERT INTO skills (username, skillname) values (:username, :skill)";
$pdoResult = $pdo->prepare($pdoQuery);
$pdoExec = $pdoResult->execute(array(
":username" => $username,
":skill" => $number[$i]
));
}
}
}
解决方案
如果您有多个具有这样名称属性的表单控件(无论它们是否被动态添加):
<input type="text" name="skill[]">
这不会转化为$_POST['skill[]']
您的 PHP 代码。它将只是$_POST['skill']
,它将包含在输入中输入的所有具有这些名称的值的数组。
假设这是你所拥有的:
首先,准备循环前的语句。为每次执行重新准备相同的语句会失去使用准备好的语句的性能优势。
$pdoQuery = "INSERT INTO skills (username, skillname) values (:username, :skill)";
$pdoResult = $pdo->prepare($pdoQuery);
然后,只需迭代$_POST['skill']
. 如果其中没有任何内容,则循环的内容将永远不会运行。
foreach ($_POST['skill'] as $skill) {
if (trim($skill)) { // you don't have to explicitly check for '', because '' == false
$pdoExec = $pdoResult->execute([
":username" => $username,
":skill" => $skill
]);
}
}
推荐阅读
- django - 以复选按钮的形式从一个模型获取数据到另一个模型,然后将选中的按钮保存在不同的模型中
- java - Spring 4 @Conditional:环境属性不可用,除非使用@PropertySource
- c# - 如果未在 WPF 中进行新的日期更改,则自定义 DatePicker 下拉菜单不会关闭
- angular - 默认路由模块与其他所有模块一起加载
- php - 加载视图中的变量
- reactjs - React re-write componentWillReceiveProps in useEffect
- javascript - 如何区分数组对象的差异?
- r - 我的 R 函数返回
在计算列而不是数字中。我该如何解决? - ruby-on-rails - 下载带有 ruby-on-rails 的 PDF 文件,错误消息
- css - 反应可折叠面板css问题