Ваш цикл эффективно переопределяет переменную $test
на каждой итерации:
$test = $_POST['item_name'. $i''];
Если вы хотите поместить их в массив, измените на $test[]
. Также он содержит ошибку разбора, указанную brian_d
.
Звучит немного страшно, если переменная num_cart_items
отправляется вместе с формой. Вы устанавливаете это с помощью JavaScript? Пользователь может манипулировать им. Вы не должны полагаться на это. Я верю, что вам нужно сделать форму поля как:
<input type="text" name="item_name[]" />
Обратите внимание на квадратные скобки в конце названия. Это создаст массив в массиве $_POST
: $_POST['item_name']
будет содержать имена всех элементов.
Тогда, как устроена ваша БД? Я думаю, вы хотите вставить их в один запрос как:
INSERT INTO ORDERS VALUES (item_name_1, ...), (item_name_2, ...)
Если это так, вы можете сделать строку из массива:
$query = 'INSERT INTO ORDERS VALUES ';
foreach($_POST['item_name'] as $item_name){
$query .= '('.stripslashes($item_name). /*put other column values*/ '),';
}
$query = rtrim($query, ',');
Обратите внимание, что использование addslashes
недостаточно для защиты от внедрения SQL.