2017-01-23 5 views
0

У меня есть этот пример кода, который генерирует динамические поля.Как вставить значения из сгенерированных динамических полей в базу данных

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

Я попытался взорвать, но результат не соответствует формату.

implode (',', $name); 
implode (',', $sweets); 
implode (',', $fruits); 
implode (',', $drinks); 

Это мои столбцы (номер, имя, сладкие, фрукты, напитки)

так, если я произвожу 3 строки она должна быть вставленной как этот

ID | NAME | SWEETS | FRUITS | DRINKS 

1 | mark | cake | apple | 1 

2 | jenny |candy | mango | 2 

3 | randy | choco | ORANGE | 3 

На самом деле я не знаете, если это возможно. Благодаря

скрипку

https://jsfiddle.net/jqj1h4vb/2/

+1

вы не можете использовать лопаются ... Вы должны цикла данные формы и построить многофункциональный запрос вставки затем вставить в БД. – Naga

+0

Предполагая, что ID является вашим основным ключом, не хотите ли вы, чтобы он пошел 1, 2, 3, а не 1,1,1? – Ultimater

+0

О, извините, я забыл, спасибо –

ответ

1

Этот код вы должны получить прокатки.
Перед тем, как тестировать код, необходимо отметить следующее:
. Я заметил некоторые множественные несоответствия в вашем коде, которые могут корректироваться в зависимости от имен полей формы и имен столбцов базы данных. Надеюсь, я правильно догадался, и вы можете просто скопировать мой код, чтобы заставить его работать.
. Также обратите внимание, что мой код ожидает, что данные формы будут POSTED. Если вы отправляете данные формы в виде строки запроса, ее можно или не удалять из-за query string limits в разных браузерах и в зависимости от того, сколько данных пользователь отправляет сразу.
. Также мой код предполагает, что первичное поле автоматической базы данных увеличивается, и что вы используете MySQL или базу данных на базе SQL, поэтому при вставке нет необходимости указывать ID.
. Я также надеюсь, что вы добавите некоторую защиту для кода, например, управление потоками или капчу или invisible captcha и т. Д., Чтобы никто из пользователей не мог наводнить вашу базу данных до тех пор, пока она не достигнет своего предела.

Вот PDO решение:

<?php 
function getPostArray($v) 
{ 
    if(!isset($_POST[$v]))return []; 
    if(!is_array($_POST[$v]))return [$_POST[$v]]; 
    return $_POST[$v]; 
} 

$n = getPostArray('name'); 
$s = getPostArray('sweet'); 
$f = getPostArray('fruit'); 
$d = getPostArray('drinks'); 

$insertQuery = []; 
$insertData = []; 
foreach($n as $k=>$v) 
{ 
    $insertData[] = array_key_exists($k, $n) ? $n[$k] : ''; 
    $insertData[] = array_key_exists($k, $s) ? $s[$k] : ''; 
    $insertData[] = array_key_exists($k, $f) ? $f[$k] : ''; 
    $insertData[] = array_key_exists($k, $d) ? $d[$k] : ''; 
    $insertQuery[] = '(?, ?, ?, ?)'; 
} 
// assuming your table is named `MyTable` 
$sql = 'INSERT INTO `MyTable` (name, sweets, fruits, drinks) VALUES '; 
if(!empty($insertQuery)) 
{ 
    $sql .= implode(', ', $insertQuery); 

    // assuming you have a valid PDO $db connection open 
    if(isset($db)) 
    { 
     $stmt = $db->prepare($sql); 
     $stmt->execute($insertData); 
    // otherwise you just wanna see the query 
    } else { 
     printf("<pre>$sql\n%s</pre>",print_r($insertData,true)); 
    } 
} 
+0

Спасибо, сэр, я попробую изучить этот. –

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