2012-08-14 2 views
0

У меня есть исправление. У меня есть код, который не вставляет несколько данных в таблицу mysql с одной формой. Вот мой код:Вставка нескольких строк в таблице Mysql с помощью PHP

<?php 
if (isset($_POST['submitted'])) { 
    include('config.php'); 
    foreach($_POST['name'] as $row=>$nam) { 
    $name=$nam; 
    $class=$_POST['class'][$row]; 
    echo "<br/>" . $name . "<br/>" . $class; 
    $sql="INSERT INTO multiple (name, class) VALUES ('$name','$class')"; 
    } 
    if (!mysql_query($sql)) die('Error: ' . mysql_error()); 
    echo "1 record added"; 
} 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<label>Name1: 
<input id="name" name="name[]" type="text"> 
<input type="hidden" name="submitted" value="true" /> 
</label> 
<label> Class1: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name2: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class2: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name3: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class3: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name4: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class4: 
<input id="class" name="class[]" type="text"> 
</label> 
<label>Name5: 
<input id="name" name="name[]" type="text"> 
</label> 
<label>Class5: 
<input id="class" name="class[]" type="text"> 
</label> 
<input value="Add" type="submit"> 

</form> 

Когда я нажимаю кнопку отправки, ничего не вставляется в таблицу mysql. Создаются только пустые поля. Если я вставляю 5 текстовых полей, я получаю 5 пустых полей в таблице sql.

+1

'mysql_ *' является устаревшим, и ваш код открыт для инъекции SQL. –

+0

Что теперь делать? Есть идеи? –

+0

, пожалуйста, покажите нам вывод вашего утверждения эха. также echo $ sql; –

ответ

1

Imroz, ваше использование [] как часть имени вашего входного элемента (не id) пример name="class[]", когда форма размещена, она строит массив. Объект post, который будет распознан PHP, будет $_POST['class']

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

если вы сделали

for($x=0;$x < count($_POST['class']); $x++) 
{ 
    echo $_POST['class'][$x].'<br>'; 
} 

вы сможете увидеть все размещенные материалы от входов с именем class[]

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

+0

OP уже принимает во внимание, что это массивы с использованием цикла foreach для итерации. –

+0

Спасибо Крису. Теперь я понимаю, почему вставляются пустые поля. Большое спасибо Крису! –

+0

Крис, в системе, которую вы показали, по-прежнему вставляет пустые строки в таблицу :( –

0

У вас есть } в неправильном месте.

} сразу после $sql= должна быть перемещено после echo "1 record added";

Я переформатирование код, чтобы использовать правильные отступы и ошибка была очевидна.

1

я думаю, что ваш запрос вставки проблема ..... попробовать как этот

$query = mysql_query("INSERT INTO category VALUES('','$name','$class','')") or die(mysql_error()); 
Смежные вопросы