Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: запись в БД циклом
Форумы портала PHP.SU » » Работа с СУБД » запись в БД циклом

Страниц (1): [1]
 

1. sergoVL - 17 Сентября, 2016 - 14:06:01 - перейти к сообщению
Доброе время суток. Бьюсь уже долгое время. Не могу понять как записать весь массив в БД. Понятно, что для этого нужен цикл. У меня не получается его сделать.
Без цикла пробовал записывать, все работает. Записывается последнее значение массива.

Можете показать схематично,как он должен выглядеть?
2. Denkill - 18 Сентября, 2016 - 11:31:38 - перейти к сообщению
Перебираешь массив с помощью циклов (foreach, for, while), и для каждого значения делаешь mysql_query
PHP:
скопировать код в буфер обмена
  1. $array = array('Яблоко','Банан','Виноград');
  2. foreach($array as $key => $value){
  3.  mysql_query("INSERT INTO `table`(`id`,`value`) VALUES('".$key."','".$value."')");
  4. }
3. sergoVL - 18 Сентября, 2016 - 12:32:26 - перейти к сообщению
Denkill пишет:
Перебираешь массив с помощью циклов (foreach, for, while), и для каждого значения делаешь mysql_query
PHP:
скопировать код в буфер обмена
  1. $array = array('Яблоко','Банан','Виноград');
  2. foreach($array as $key => $value){
  3.  mysql_query("INSERT INTO `table`(`id`,`value`) VALUES('".$key."','".$value."')");
  4. }


Так а если у меня выводит лишь последнее значение массива - это к чему?
4. Denkill - 18 Сентября, 2016 - 13:01:09 - перейти к сообщению
sergoVL пишет:
Перебираешь массив с помощью циклов (foreach, for, while), и для каждого значения делаешь mysql_query
$array = array('Яблоко','Банан','Виноград');
foreach($array as $key => $value){
mysql_query("INSERT INTO `table`(`id`,`value`) VALUES('".$key."','".$value."')");
}

Так а если у меня выводит лишь последнее значение массива - это к чему?


Покажи код.
5. sergoVL - 18 Сентября, 2016 - 13:08:25 - перейти к сообщению
Denkill пишет:
sergoVL пишет:
Перебираешь массив с помощью циклов (foreach, for, while), и для каждого значения делаешь mysql_query
$array = array('Яблоко','Банан','Виноград');
foreach($array as $key => $value){
mysql_query("INSERT INTO `table`(`id`,`value`) VALUES('".$key."','".$value."')");
}

Так а если у меня выводит лишь последнее значение массива - это к чему?


Покажи код.


PHP:
скопировать код в буфер обмена
  1.  
  2. $newmassiv = array(
  3.  
  4.     1 => "",
  5.     2 => "25 ррарркр",
  6.     3 => "32 ттьтт",
  7.     4 => "44 ььроппа",
  8.     5 => "",
  9.     6 => "новая 25 строка",
  10.     7 => "ваапм 32 строка",
  11.     8 => "аааа 44  строка",
  12.     9 => "",
  13.     10 => "аааа 25 вторую строку",
  14.     11 => "новая строка 32 ",
  15.     12 => "новая строка 44 ",
  16.     13 => "",
  17.     14 => "аааа 25 гггггг",
  18.     15 => "новая ввсвс 32 строка",
  19.     16 => "уккк 44 выв строка",
  20.     17 => "",
  21.     18 => "новая 25 строка",
  22.     19 => "ссвсс 32 строка",
  23.     20=>  "ыраав 44 строка",
  24.     21 => "",
  25.     22 => "новая 25 ыыыыы строка",
  26.     23 => "уцкв 32 строка",
  27.     24 => "двдвл 44  строка",
  28. );
  29.  

К примеру определили, что
PHP:
скопировать код в буфер обмена
  1.  
  2. $count_massiv=count($output);
  3. foreach ($output as $count_massiv){
  4.  
  5. if ($t = strstr($count_massiv, 'аааа')) {
  6.     echo '<td>';
  7.     $l = substr($t,0,2);
  8.    echo $l;
  9.    
  10.     echo '</td>';
  11.     }
  12.  
  13.  
  14. if ($y = strstr($count_massiv, 'новая')) {
  15.    
  16.    echo '<td>';
  17.     $u = substr($y,0,3);
  18.    echo $u;
  19.    
  20.     echo '</td>';
  21.  
  22. }
  23. }
  24.  


Записываю в БД

PHP:
скопировать код в буфер обмена
  1.  
  2. $l = array();
  3. $u = array();
  4.  
  5. // Подключение к базе данных
  6. $link = mysqli_connect(
  7.             'localhost',  //Хост, к которому мы подключаемся
  8.             'root',       // Имя пользователя
  9.             'west10795',   // Используемый пароль
  10.             'TEST1')OR DIE("Не могу создать соединение ");     //База данных для запросов по умолчанию
  11.            
  12. //необходимо выбрать собственно саму базу, с которой мы будем работать
  13. mysqli_select_db($link,"TEST1");
  14.  
  15. // Установка кодировки соединения
  16. mysqli_set_charset($link,"utf8");
  17.  
  18. //Вывод ошибки
  19. if (!$link) {
  20.     die('Connect Error: ' . mysqli_connect_errno());
  21. }
  22.  
  23. //записываем в БД 1-й вариант - не получается
  24. for ($n = 0; $n < max(count($u), count($l)); $n++) {
  25.     mysqli_query($link, "INSERT INTO `mytable` (`name`, `time`)
  26.    VALUES ('" . $l[$n] . "','" . $u[$n] . "')");
  27. }
  28.  
  29. ////записываем в БД 2-й вариант - заносит лишь только последнее значение массива, но это понятно, что нужен цикл. Но я не понимаю как его сотворить.
  30. mysqli_query ($link,"INSERT INTO `mytable` (`name`,`time`) VALUES ('$u','$l')");
  31.  

(Добавление)
Denkill пишет:
sergoVL пишет:
Перебираешь массив с помощью циклов (foreach, for, while), и для каждого значения делаешь mysql_query
$array = array('Яблоко','Банан','Виноград');
foreach($array as $key => $value){
mysql_query("INSERT INTO `table`(`id`,`value`) VALUES('".$key."','".$value."')");
}

Так а если у меня выводит лишь последнее значение массива - это к чему?


Покажи код.


$count_massiv=count($output); - лишнее
6. Denkill - 18 Сентября, 2016 - 13:18:22 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?$l = array(
  2.  
  3.     1 => "",
  4.     2 => "25 ррарркр",
  5.     3 => "32 ттьтт",
  6.     4 => "44 ььроппа",
  7.     5 => "",
  8.     6 => "новая 25 строка",
  9.     7 => "ваапм 32 строка",
  10.     8 => "аааа 44  строка",
  11.     9 => "",
  12.     10 => "аааа 25 вторую строку",
  13.     11 => "новая строка 32 ",
  14.     12 => "новая строка 44 ",
  15.     13 => "",
  16.     14 => "аааа 25 гггггг",
  17.     15 => "новая ввсвс 32 строка",
  18.     16 => "уккк 44 выв строка",
  19.     17 => "",
  20.     18 => "новая 25 строка",
  21.     19 => "ссвсс 32 строка",
  22.     20=>  "ыраав 44 строка",
  23.     21 => "",
  24.     22 => "новая 25 ыыыыы строка",
  25.     23 => "уцкв 32 строка",
  26.     24 => "двдвл 44  строка",
  27. );
  28.  
  29. // Подключение к базе данных
  30.             'localhost',  //Хост, к которому мы подключаемся
  31.             'root',       // Имя пользователя
  32.             'west10795',   // Используемый пароль
  33.             'TEST1')OR DIE("Не могу создать соединение ");     //База данных для запросов по умолчанию
  34.            
  35. //необходимо выбрать собственно саму базу, с которой мы будем работать
  36. mysqli_select_db($link,"TEST1");
  37.  
  38. // Установка кодировки соединения
  39. mysqli_set_charset($link,"utf8");
  40.  
  41. //Вывод ошибки
  42. if (!$link) {
  43.     die('Connect Error: ' . mysqli_connect_errno());
  44. }
  45.  
  46. //записываем в БД 1-й вариант - не получается
  47. for ($n = 0; $n < count($l); $n++) {
  48.     mysqli_query($link, "INSERT INTO `mytable` (`name`, `time`)
  49.   VALUES ('" . $l[$n] . "','" . $l[$n] . "')");
  50. }
  51.  
  52.  


И для чего нужен массив $u?
7. sergoVL - 18 Сентября, 2016 - 13:22:19 - перейти к сообщению
Denkill пишет:
PHP:
скопировать код в буфер обмена
  1. <?$l = array(
  2.  
  3.     1 => "",
  4.     2 => "25 ррарркр",
  5.     3 => "32 ттьтт",
  6.     4 => "44 ььроппа",
  7.     5 => "",
  8.     6 => "новая 25 строка",
  9.     7 => "ваапм 32 строка",
  10.     8 => "аааа 44  строка",
  11.     9 => "",
  12.     10 => "аааа 25 вторую строку",
  13.     11 => "новая строка 32 ",
  14.     12 => "новая строка 44 ",
  15.     13 => "",
  16.     14 => "аааа 25 гггггг",
  17.     15 => "новая ввсвс 32 строка",
  18.     16 => "уккк 44 выв строка",
  19.     17 => "",
  20.     18 => "новая 25 строка",
  21.     19 => "ссвсс 32 строка",
  22.     20=>  "ыраав 44 строка",
  23.     21 => "",
  24.     22 => "новая 25 ыыыыы строка",
  25.     23 => "уцкв 32 строка",
  26.     24 => "двдвл 44  строка",
  27. );
  28.  
  29. // Подключение к базе данных
  30.             'localhost',  //Хост, к которому мы подключаемся
  31.             'root',       // Имя пользователя
  32.             'west10795',   // Используемый пароль
  33.             'TEST1')OR DIE("Не могу создать соединение ");     //База данных для запросов по умолчанию
  34.            
  35. //необходимо выбрать собственно саму базу, с которой мы будем работать
  36. mysqli_select_db($link,"TEST1");
  37.  
  38. // Установка кодировки соединения
  39. mysqli_set_charset($link,"utf8");
  40.  
  41. //Вывод ошибки
  42. if (!$link) {
  43.     die('Connect Error: ' . mysqli_connect_errno());
  44. }
  45.  
  46. //записываем в БД 1-й вариант - не получается
  47. for ($n = 0; $n < count($l); $n++) {
  48.     mysqli_query($link, "INSERT INTO `mytable` (`name`, `time`)
  49.   VALUES ('" . $l[$n] . "','" . $u[$n] . "')");
  50. }
  51.  
  52.  


И для чего нужен массив $u?


Создаю таблицу таких ячеек будет несколько.
(Добавление)
Denkill пишет:
PHP:
скопировать код в буфер обмена
  1. <?$l = array(
  2.  
  3.     1 => "",
  4.     2 => "25 ррарркр",
  5.     3 => "32 ттьтт",
  6.     4 => "44 ььроппа",
  7.     5 => "",
  8.     6 => "новая 25 строка",
  9.     7 => "ваапм 32 строка",
  10.     8 => "аааа 44  строка",
  11.     9 => "",
  12.     10 => "аааа 25 вторую строку",
  13.     11 => "новая строка 32 ",
  14.     12 => "новая строка 44 ",
  15.     13 => "",
  16.     14 => "аааа 25 гггггг",
  17.     15 => "новая ввсвс 32 строка",
  18.     16 => "уккк 44 выв строка",
  19.     17 => "",
  20.     18 => "новая 25 строка",
  21.     19 => "ссвсс 32 строка",
  22.     20=>  "ыраав 44 строка",
  23.     21 => "",
  24.     22 => "новая 25 ыыыыы строка",
  25.     23 => "уцкв 32 строка",
  26.     24 => "двдвл 44  строка",
  27. );
  28.  
  29. // Подключение к базе данных
  30.             'localhost',  //Хост, к которому мы подключаемся
  31.             'root',       // Имя пользователя
  32.             'west10795',   // Используемый пароль
  33.             'TEST1')OR DIE("Не могу создать соединение ");     //База данных для запросов по умолчанию
  34.            
  35. //необходимо выбрать собственно саму базу, с которой мы будем работать
  36. mysqli_select_db($link,"TEST1");
  37.  
  38. // Установка кодировки соединения
  39. mysqli_set_charset($link,"utf8");
  40.  
  41. //Вывод ошибки
  42. if (!$link) {
  43.     die('Connect Error: ' . mysqli_connect_errno());
  44. }
  45.  
  46. //записываем в БД 1-й вариант - не получается
  47. for ($n = 0; $n < count($l); $n++) {
  48.     mysqli_query($link, "INSERT INTO `mytable` (`name`, `time`)
  49.   VALUES ('" . $l[$n] . "','" . $l[$n] . "')");
  50. }
  51.  
  52.  


И для чего нужен массив $u?


Может вместо count($l) поставить count($newmassiv)?
8. Denkill - 18 Сентября, 2016 - 13:42:50 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?$l = array(
  2.  
  3.     1 => "",
  4.     2 => "25 ррарркр",
  5.     3 => "32 ттьтт",
  6.     4 => "44 ььроппа",
  7.     5 => "",
  8.     6 => "новая 25 строка",
  9.     7 => "ваапм 32 строка",
  10.     8 => "аааа 44  строка",
  11.     9 => "",
  12.     10 => "аааа 25 вторую строку",
  13.     11 => "новая строка 32 ",
  14.     12 => "новая строка 44 ",
  15.     13 => "",
  16.     14 => "аааа 25 гггггг",
  17.     15 => "новая ввсвс 32 строка",
  18.     16 => "уккк 44 выв строка",
  19.     17 => "",
  20.     18 => "новая 25 строка",
  21.     19 => "ссвсс 32 строка",
  22.     20=>  "ыраав 44 строка",
  23.     21 => "",
  24.     22 => "новая 25 ыыыыы строка",
  25.     23 => "уцкв 32 строка",
  26.     24 => "двдвл 44  строка",
  27. );
  28.  
  29. // Подключение к базе данных
  30.             'localhost',  //Хост, к которому мы подключаемся
  31.             'root',       // Имя пользователя
  32.             'west10795',   // Используемый пароль
  33.             'TEST1')OR DIE("Не могу создать соединение ");     //База данных для запросов по умолчанию
  34.            
  35. //необходимо выбрать собственно саму базу, с которой мы будем работать
  36. mysqli_select_db($link,"TEST1");
  37.  
  38. // Установка кодировки соединения
  39. mysqli_set_charset($link,"utf8");
  40.  
  41. //Вывод ошибки
  42. if (!$link) {
  43.     die('Connect Error: ' . mysqli_connect_errno());
  44. }
  45.  
  46. //записываем в БД 1-й вариант - не получается
  47. for ($n = 0; $n < count($l); $n++) {
  48.     mysqli_query($link, "INSERT INTO `mytable` (`name`, `time`)
  49.  VALUES ('" . $l[$n] . "','" . $l[$n] . "')");
  50. }
  51.  


Вот этот кусок кода должен корректно работать.
Тут массив $l и count($l)

 

Powered by ExBB FM 1.0 RC1