Intereting Posts
Получение имен для отображения в выпадающем списке с помощью cakephp Настройка Yii2 Advanced на Heroku Как сделать субдомен на моем локальном хосте? получать xml-файл через сообщение в php Правильный способ установки маркера Bearer с CURL MySQL + PHP: выборка данных с использованием внешних ключей Как исправить устаревшую проблему session_register ()? mb_strlen () & strlen () не возвращают правильные значения из вызова Ajax в PHP Отслеживание информации из аудиопотока с помощью PHP Как правильно отображать китайские символы в PHP? PHP Crypt () Сравнение двух зашифрованных строк Вызов функции javascript внутри кода файла ответа jquery ajax Использование PHP и Google Maps Api для определения расстояния между двумя почтовыми кодами (Великобритания) как создать имя пользователя: пароль в файле .htpasswd на сервере Wamp, установленном на ОС Windows PHP Предупреждение: move_uploaded_file () не может перемещаться

Как сделать массив для добавления нескольких строк в таблицу sql той же формой

Я хочу добавить несколько строк в таблицу по форме.

Я знаю, как сделать только один массив данных, но в случае всего массива имен, всех подробных массивов, всех массивов контактов я не могу этого сделать.

Я также читаю здесь и много статей в Google, но я не смог добиться результата.

Поэтому, пожалуйста, помогите мне создать его?

Итак, я от:

<form action="" method="POST"> Name: <input type="text" name="name[]" value=""> Detail: <input type="text" name="detail[]" value=""> Address: <input type="text" name="add[]" value=""> <br /> Name: <input type="text" name="name[]" value=""> Detail: <input type="text" name="detail[]" value=""> Address: <input type="text" name="add[]" value=""> <br /> Name: <input type="text" name="name[]" value=""> Detail: <input type="text" name="detail[]" value=""> Address: <input type="text" name="add[]" value=""> <input type="submit" name="submit" id="submit" value="Submit"> 

И мой php для вставки в sql

 include("../db.php"); global $dbh; if(isset($_POST['submit'])){ $data = array(); // now how to do all single post array? $name = mysqli_real_escape_string($_POST['name']); $detail = mysqli_real_escape_string($_POST['detail']); $add = mysqli_real_escape_string($_POST['add']); $result=mysqli_query($dbh,"INSERT INTO varify (id,name,detail,add) VALUES('','$name','$detail','$add')"); в include("../db.php"); global $dbh; if(isset($_POST['submit'])){ $data = array(); // now how to do all single post array? $name = mysqli_real_escape_string($_POST['name']); $detail = mysqli_real_escape_string($_POST['detail']); $add = mysqli_real_escape_string($_POST['add']); $result=mysqli_query($dbh,"INSERT INTO varify (id,name,detail,add) VALUES('','$name','$detail','$add')"); 

Конечно, сначала вам нужно их закодировать, вы можете использовать foreach . Затем вы можете использовать ключ внутри foreach для доступа к другим выстроенным индексам в форме:

Пример:

 if(isset($_POST['submit'])) { foreach($_POST['name'] as $k => $name) { $name = mysqli_real_escape_string($dbh, $name); $detail = mysqli_real_escape_string($dbh, $_POST['detail'][$k]); $add = mysqli_real_escape_string($dbh, $_POST['add'][$k]); // continue insertion } } 

Или с использованием подготовленных заявлений:

 if(isset($_POST['submit'])) { foreach($_POST['name'] as $k => $name) { $insert = $db->prepare('INSERT INTO varify (id, name, detail, add) VALUES('', ?, ?, ?)'); $insert->bind_value('sss', $name, $_POST['detail'][$k], $_POST['add'][$k]); $insert->execute(); } } 

Другой альтернативой было бы создание структуры группировки в вашей форме разметки html.

Используйте клавиши внутри группировки имен, чтобы сгруппировать их. Таким образом, разметка будет выглядеть примерно так:

 <form action="" method="POST"> Name: <input type="text" name="input[0][name]" value=""> Detail: <input type="text" name="input[0][detail]" value=""> Address: <input type="text" name="input[0][add]" value=""> <br /> Name: <input type="text" name="input[1][name]" value=""> Detail: <input type="text" name="input[1][detail]" value=""> Address: <input type="text" name="input[1][add]" value=""> <br /> Name: <input type="text" name="input[2][name]" value=""> Detail: <input type="text" name="input[2][detail]" value=""> Address: <input type="text" name="input[2][add]" value=""> <br /> <input type="submit" name="submit" id="submit" value="Submit"> 

Когда вы обрабатываете его в PHP, теперь они сгруппированы по строкам и могут быть доступны следующим образом:

 <?php if(isset($_POST['submit'])) { $input = $_POST['input']; foreach($input as $values) { if(!empty($values['name']) && !empty($values['detail']) && !empty($values['add'])) { $insert = $db->prepare('INSERT INTO varify (id, name, detail, add) VALUES('', ?, ?, ?)'); $insert->bind_value('sss', $values['name'], $values['detail'], $values['add']); $insert->execute(); } } } 

Замените код следующим:

 include("../db.php"); global $dbh; if(isset($_POST['submit'])){ $data = array(); // now how to do all single post array? $names = $_POST['name']; $details = $_POST['detail']; $adds = $_POST['add']; for($i = 0; $i < count($names); $i++) $curr_name = mysqli_real_escape_string($names[$i]); $curr_detail = mysqli_real_escape_string($details[$i]); $curr_add = mysqli_real_escape_string($adds[$i]); $result=mysqli_query($dbh,"INSERT INTO varify (id,name,detail,add) VALUES('','$curr_name','$curr_detail','$curr_add')"); } } в include("../db.php"); global $dbh; if(isset($_POST['submit'])){ $data = array(); // now how to do all single post array? $names = $_POST['name']; $details = $_POST['detail']; $adds = $_POST['add']; for($i = 0; $i < count($names); $i++) $curr_name = mysqli_real_escape_string($names[$i]); $curr_detail = mysqli_real_escape_string($details[$i]); $curr_add = mysqli_real_escape_string($adds[$i]); $result=mysqli_query($dbh,"INSERT INTO varify (id,name,detail,add) VALUES('','$curr_name','$curr_detail','$curr_add')"); } } 

Если поле id является полем автоматического увеличения, я предлагаю вам не вручную вставлять идентификатор, особенно когда вы передаете пустую строку. Вместо этого замените код вставки следующим образом:

 $result=mysqli_query($dbh,"INSERT INTO varify (name,detail,add) VALUES('$curr_name','$curr_detail','$curr_add')"); 

используйте это

  <? if(isset($_POST['submit'])){ $1=0; foreach($_POST['name'] as $key=>$inp) { $name = mysqli_real_escape_string($_POST['name'][$i]); $detail = mysqli_real_escape_string($_POST['detail'][$i]); $add = mysqli_real_escape_string($_POST['add'][$i]); $result=mysqli_query($dbh,"INSERT INTO varify (id,name,detail,add) VALUES('','".$name."','".$detail."','".$add."')"); } $1++; } ?> 

создать массив с использованием цикла foreach

 $data = '('; foreach($_POST['name'] as $key => $name){ //here use a mandatory field as foreach paremeter $data .= "'".mysqli_real_escape_string($name)."'", "'".mysqli_real_escape_string($_POST['detail'][$key])."'", "'".mysqli_real_escape_string($_POST['add'][$key])."'"; $data .= '),'; } $data = rtirm($data, ','); $result=mysqli_query($dbh,"INSERT INTO varify (name, detail, add) VALUES". $data);