我使用jquery创建了一个动态添加的表单字段并且工作完美,但无法进行db发布。我用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]
));
}
}
}
答案 0 :(得分:2)
如果您有多个具有此类名称属性的表单控件(无论是否动态添加):
<input type="text" name="skill[]">
这不会转换为PHP代码中的$_POST['skill[]']
。它只是$_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
]);
}
}