2013-07-09 4 views
0

Я не очень разбираюсь в массиве.Вставка с использованием Foreach

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

Fields

и база данных это только экономия была

DB

и это 4times петли

моих кодов ниже

<form method="post"> 
<table> 
    <tr> 
     <td>F Name</td> 
     <td>M Name</td> 
     <td>L Name</td> 
    </tr> 
    <tr> 
     <td><input type="text" name="fname" value="" /></td> 
     <td><input type="text" name="mname" value="" /></td> 
     <td><input type="text" name="lname" value="" /></td> 
    </tr> 
    <tr> 
     <td><input type="text" name="fname" value="" /></td> 
     <td><input type="text" name="mname" value="" /></td> 
     <td><input type="text" name="lname" value="" /></td> 
    </tr> 
</table> 
<br /> 
<input type="submit" name="SubmitText" value="Save" /> 
</form> 

if (isset($_POST['SubmitText'])) { 
    $fn = $_POST['fname']; 
    $mn = $_POST['mname']; 
    $ln = $_POST['lname']; 
    $value = array(); 

    foreach($_POST as $keys => $value) 
    $db = mysql_query("INSERT INTO jon_test VALUE('', '".$value['fn']."', '".$value['mn']."', '".$value['ln']."')"); 

    echo $value['fn'] . '<br />'; 
    echo $db == true ? 'Yes' : 'No'; 
} 

есть что-то не так с моими кодами ?

+1

входа имя совпадают, так что u получает только последний результат – VeNoMiS

+2

* Обязательно: * Функции 'mysql_ *' будут [устарели в PHP 5.5] (http://php.net/manual/en/faq.databases.php#faq .databases.mysql.deprecated). Не рекомендуется писать новый код, поскольку он будет удален в будущем. Вместо этого либо [MySQLi] (http://php.net/manual/en/book.mysqli.php), либо [PDO] (http://php.net/manual/en/book.pdo.php) и [быть лучшим разработчиком PHP] (http://jason.pureconcepts.net/2012/08/better-php-developer/). –

+1

Как обо всем. С вашим кодом все не так. 1. Вы не избегаете своих строк, что позволяет использовать SQL-инъекции. 2. вы не отступаете от кода, делая его нечитаемым и, следовательно, подверженным ошибкам. 3. Вы используете функции mysql_ *, которые устарели. Используйте mysqli или PDO. –

ответ

2
<form method="post"> 
<table> 
    <tr> 
     <td>F Name</td> 
     <td>M Name</td> 
     <td>L Name</td> 
    </tr> 
    <tr> 
     <td><input type="text" name="input[0][fname]" value="" /></td> 
     <td><input type="text" name="input[0][mname]" value="" /></td> 
     <td><input type="text" name="input[0][lname]" value="" /></td> 
    </tr> 
    <tr> 
     <td><input type="text" name="input[1][fname]" value="" /></td> 
     <td><input type="text" name="input[1][mname]" value="" /></td> 
     <td><input type="text" name="input[1][lname]" value="" /></td> 
    </tr> 
</table> 
<br /> 
<input type="submit" name="SubmitText" value="Save" /> 
</form> 

После этого вам нужно будет iteratate почтовых параметров:

foreach($_POST['input'] as $input) { 
    $db = mysql_query("INSERT INTO jon_test VALUE('', '".$input['fname']."', '".$input['mname']."', '".$input['lname']."')"); 

    echo $input['fname'] . '<br />'; 
    echo $db == true ? 'Yes' : 'No'; 
} 
+1

@ user1538668 ваш код уязвим для инъекций sql, хорошо, если вы используете PDO или Mysqli с подготовленными операторами, чтобы избежать значений до их вставки в базу данных. http://php.net/manual/en/book.mysqli.php http://php.net/manual/en/book.pdo.php – lexmihaylov

+0

да, у меня есть класс mysqli, просто я использовал этот mysql для теста только. К сожалению, в следующий раз я выложу свой класс для mysqli – Butternut

+0

спасибо Я применяю его к своей системе, он работает не на моем WebShop @lexmihaylov – Butternut

2

Оберните PHP код в <?php ?> тегов, как это:

<?php 
if (isset($_POST['SubmitText'])) { 
    $fn = $_POST['fname']; 
    $mn = $_POST['mname']; 
    $ln = $_POST['lname']; 
    $value = array(); 

    foreach($_POST as $keys => $value) 
    $db = mysql_query("INSERT INTO jon_test VALUE('', '".$value['fn']."', '".$value['mn']."', '".$value['ln']."')"); 

    echo $value['fn'] . '<br />'; 
    echo $db == true ? 'Yes' : 'No'; 
} 
?> 

Кроме того, я рекомендую вам использовать mysqli_* функции вместо mysql_* функций, поскольку mysql_* функции устарели и будут удалены в futere.

+1

проблема не связана с тегами – VeNoMiS

+1

Я думаю, что ОП знает, что уже, может быть, он забыл ввести теги в вопросах. Ему удалось вставить несколько вещей в базу данных. – Timber

+2

нет, он делает так, чтобы он вставлял первое значение 4 раза – VeNoMiS

1

ввод имя такие же, так что вы получите только последний результат использования [], чтобы создать массив значений

Смежные вопросы