Вставка 2D значений массива в SQL - PullRequest
0 голосов
/ 10 января 2011

Прямо сейчас я зациклил форму, которая в итоге дает мне 2D-массив.

Массив 0D
Пользовательские массивы 1D
Пользовательские поля 2D

Array ([1] => Array ([fname] => qweqwe [lname] => qwewqe [email] => qwewqe [age] => wewqe) [2] => Array ([fname] => 123123 [lname]=> 123123 [email] => 23123 [age] => 23123))

Это пример того, что я получаю, когда набираю мусор в свои поля.Чтобы проверить, могу ли я получить значения для каждой формы, я использовал это:

$ i = $ _POST ['number'];
$ corporate = $ _POST ['corporate'];
$ x = 1;
print_r ($ corporate);
while ($ x <= $ i) <br>{
echo "Имя, имя". $ Corporate [$ x] ["fname"]. ".";
}

Используя это, я получу имя первого пользователя, затем второе и так далее.Это доказывает, что я могу получить 2D-значения из своих форм.

Теперь мне нужно вставить эти значения в мою таблицу.Имейте в виду, мой 1D содержит значения каждого пользователя.2D - это сами значения.

mysql_query ("ВСТАВИТЬ INTO студентов ('fname', 'lname', 'email', 'age') ЗНАЧЕНИЯ

У меня естьПонятия не имею, что после этого. Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 10 января 2011

Итак, используя ваш запрос, глубоко поняв, что он означает, я наконец-то получил его.

Вот код, который я использовал:

  foreach($corporate as $line)
        {
        $values[] = "('".implode("','",$line) . "')";
        echo "<br />";
        print_r($values);
        $a = implode(",", $values);
        echo $a;
        }

    $query = "INSERT into students (fname, lname,email,age) VALUES $a";
    $sql = mysql_query($query); 

Это прекрасно работает с моей базой данных, работает как шарм.
Однако, когда я пытаюсь сделать это на моей базе данных друзей или онлайн-базе данных, я получаю сообщение об ошибке, которое требует, чтобы я присвоил каждому полю значение.По какой-то причине он не может ввести значения NULL.

Я пытаюсь выяснить, почему, но суть моей проблемы решена.
Если вы знаете, что является причиной моей ошибки, не стесняйтеськомментарий.Спасибо.

1 голос
/ 10 января 2011

Вам необходимо добавить набор значений данных для вставки. Они будут в форме («Роберт», «Браун», «Robert.Brown@uni.com», «34») («Роберт», «Смит», «Robert.Smith@uni.com», «33»). «)

Какую версию PHP вы используете?

для php5.3 вы можете попробовать:

$values = array();
foreach($corporate as $line){
$values[] = "('".implode("','",array_map(function($x){ return addslashes($x); })) . "')";
}
$query = "INSERT INTO students ('fname','lname','email', 'age') VALUES";
$query .= implode($values);
$record = mysql_query($query);

В противном случае попробуйте:

$values = array();
foreach($corporate as $line){

foreach($line as $i=>$item) $line[$i] = addslashes($item);
$values[] = "('".implode("','",$line) . "')";
}
$query = "INSERT INTO students ('fname','lname','email', 'age') VALUES";
$query .= implode($values);
$record = mysql_query($query);

Чтобы решить вторую часть вашей проблемы, вам нужно отредактировать определения таблиц и удалить определение NOT NULL, которое находится в каждом поле. У вас есть php мой админ на сервере? Вы можете сделать это, отредактировав таблицу и поля, иначе вы можете запустить sql, используя ALTER TABLE. Дайте мне знать, если вам нужна дополнительная информация об этом.

...