2016-01-12 2 views
0

Я хочу N одинаковых строк для базы данных MySQL на основе количества из веб-формы В настоящий момент скрипт вставки добавляет только одну строку за раз («1» - это значение по умолчанию для этого входа количество)Вставка нескольких идентичных строк в mysql DB на основе количества

Вот этот скрипт:

<?php 
require 'connect.php'; 

// define variables and set to empty values 
$cosmInOut_name = $cosmInOut_dateIn = $cosmInOut_expire = $cosmInOut_priceIn = $cosmInOut_4sale = $cosmInOut_dateOut = $cosmInOut_qtyOut = $cosmInOut_priceOut = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $cosmInOut_name = test_input($_POST["cosmInOut_name"]); 
    $cosmInOut_dateIn = test_input($_POST["cosmInOut_dateIn"]); 
    $cosmInOut_qtyIn = test_input($_POST["cosmInOut_qtyIn"]); 
    $cosmInOut_expire = test_input($_POST["cosmInOut_expire"]); 
    $cosmInOut_priceIn = test_input($_POST["cosmInOut_priceIn"]); 
    $cosmInOut_4sale = test_input($_POST["cosmInOut_4sale"]); 
    $cosmInOut_dateOut = test_input($_POST["cosmInOut_dateOut"]); 
    $cosmInOut_qtyOut = test_input($_POST["cosmInOut_qtyOut"]); 
    $cosmInOut_priceOut = test_input($_POST["cosmInOut_priceOut"]); 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

$inserted = 0; 
while ($cosmInOut_qtyIn > $inserted) { 
$sql = "INSERT INTO cosmInOut (cosmInOut_name, cosmInOut_dateIn, cosmInOut_expire, cosmInOut_priceIn, cosmInOut_4sale, cosmInOut_dateOut, cosmInOut_qtyOut, cosmInOut_priceOut)" . 
     "VALUES('{$cosmInOut_name}', '{$cosmInOut_dateIn}', '{$cosmInOut_expire}', '{$cosmInOut_priceIn}', '{$cosmInOut_4sale}', '{$cosmInOut_dateOut}', '{$cosmInOut_qtyOut}', '{$cosmInOut_priceOut}')"; 
    $inserted++; 
    } 
if ($conn->query($sql) === TRUE) { 
    include('../head.php'); 
    echo ' 
     <script> some script</script> 
    '; 
    include('../footer.php'); 

} else { 
    echo 'Error' . $conn->error; 
} 

$conn->close(); 
?> 

Очевидно, что моя функция пока не работает. Как я могу это исправить? Спасибо

ответ

0

В настоящий момент вы повторяете создание строки вставки $ cosmInOut_qtyIn в количестве раз &, а затем просто вставьте ее один раз.

Вы можете создать строку запроса вне цикла только один раз &, а затем повторить запрос внутри цикла.

Другим решением является добавление значений, которые вы хотите добавить $ cosmInOut_qtyIn количество раз (разделенное запятой) в строку запроса &, затем выполните запрос только один раз. что-то вроде:

$sql = "INSERT INTO cosmInOut (cosmInOut_name, cosmInOut_dateIn, cosmInOut_expire, cosmInOut_priceIn, cosmInOut_4sale, cosmInOut_dateOut, cosmInOut_qtyOut, cosmInOut_priceOut) VALUES "; 
$sqlv = "('{$cosmInOut_name}', '{$cosmInOut_dateIn}', '{$cosmInOut_expire}', '{$cosmInOut_priceIn}', '{$cosmInOut_4sale}', '{$cosmInOut_dateOut}', '{$cosmInOut_qtyOut}', '{$cosmInOut_priceOut}')"; 

$inserted = 0; 
while ($cosmInOut_qtyIn > $inserted) 
{ 
    if ($inserted > 0) 
     $sql = $sql . ","; 
    $sql = $sql . $sqlv; 
    $inserted++; 
} 
+0

Неа, С вашей кусок кода, который я все еще получаю 1 строка вставляется ... –

+0

Вы проверили свой окончательный строку запроса - это должно быть в формате _insert INTO имя_таблицы (FLD1, fld2, .. .) VALUES ('val1', 'val2', ...), ('val1', 'val2', ...), ('val1', 'val2', ...), ...._ : проверьте документацию https://dev.mysql.com/doc/refman/5.5/en/insert.html. Я также отмечаю, что вы говорите, что 1 является значением по умолчанию для ввода количества - вы проверили, какое значение передается. – PaulF

+0

hmm. Это работает в конце концов :) Спасибо! –

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