Member 3722539 Ответов: 2

Вставка базы данных неопределенное смещение: 2


Я создал таблицу, которая состоит из двух столбцов id и name .Затем я создал строки dynmacially.То, что я хочу сделать, - это сохранить данные в БД.Но я получаю ошибку "неопределенное смещение"внутри цикла for


<?php

$con = mysqli_connect('localhost', 'root', '', 'testing');
$count = $_POST['txt'];

for ($i = 0; $i < $count; ++$i) {
    $query = "insert into emps (name) values('".$_POST['txt'][$i]."')";
    mysqli_query($con, $query);
}
echo 'ok';


Что я уже пробовал:

<form id="frm" name="frm">

<table id="tbl">
<tr><td><input type="text" name="txt[]"><button type="button" id="btn">Add</button>	</td>
	
	

</tr>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      u
</table>
<button type="button" id="save"></button>
</form>
</body>
</html>

<script>
$(function(){
	var i=1;
	$('#btn').click(function(){
	i++;
	$('#tbl').append('<tr id="row'+i+'"><td><input type="text" name="txt[]"><button type="button" id="'+i+'" class="remove">x</button>	</td>')
	})

$(document).on('click','.remove',function(){
	var id=$(this).attr('id');
	$('#row'+id+'').css('background-color','#ccc');
	$('#row'+id+'').fadeOut('slow');

})

$('#save').click(function(){
	$.ajax({
		url:"ajax.php",
		method:"post",
		data:$("#frm").serialize(),
		success:function(data){
			alert(data);
			$('#frm')[0].reset();

2 Ответов

Рейтинг:
9

Richard Deeming

Цитата:
$count = $_POST['txt'];

Вы пропускаете звонок в функция count[^]:
$count = count($_POST['txt']);

В качестве альтернативы используйте foreach петля вместо а for петля:
foreach ($_POST['txt'] as $txt)

Учебнике php - php форма с несколькими значениями полей[^]

И убедитесь, что вы не игнорируете предупреждение Патриса об уязвимости SQL-инъекции!

PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]


Member 3722539

спасибо

Рейтинг:
19

Patrice T

Цитата:
$query = "вставить в emps (name) значения('".$_POST['txt'][$i]."')";

Не обязательно решение вашего вопроса, но у вас есть еще одна проблема.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]