Если у вас есть несколько элементов управления формы с такими атрибутами имени (независимо от того, были ли они добавлены динамически или нет):
<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
]);
}
}