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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запись данных в БД из цикла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Запись данных в таблицу из цикла
Divest
Отправлено: 22 Июля, 2014 - 20:19:37
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Еще раз прошу помощи. Можно сказать совсем не разобрался как получить данные из цикла (Если я это правильно называю).
Имеем парсер:

PHP:
скопировать код в буфер обмена
  1. <?            
  2. $ch = curl_init();
  3.         CURLOPT_URL=>'http://255.255.255.255/getdev',
  4.         CURLOPT_RETURNTRANSFER=>true
  5. ));
  6. $data = curl_exec($ch);
  7.                
  8.                
  9. $dats = explode(';',$data);
  10. foreach($dats as $dat){
  11.    if(strpos($dat,':')===false)continue;
  12.    $addrs = explode(':',$dat);
  13.         echo $addrs[0].' - '.$addrs[1].PHP_EOL.'<br/>';
  14.    }


Из него получаем данные, вида:

28FF820410140093 - 25.00
28FFE90310140074 - 24.50
28FFE90310140081 - 21.00

При попытке записи в таблицу, записывается только последнее значение.

Запись происходит так:

//Отправляем данные в таблицу
$sql = "INSERT INTO sensor_readings (sensor_id, sensor_value) VALUES ('$addrs[0]', '$addrs[1]')";
if(!mysql_query($sql))
{echo '<p><b>Data upload error!</b></p>';}
else
{echo '<p><b>OK</b></p>';}
// закрываем соединение с базой
mysql_close($connect);

Собственно как мне получить все значения из цикла опроса.
 
 Top
DelphinPRO
Отправлено: 22 Июля, 2014 - 20:49:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




вызывайте mysql_query внутри цикла


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Divest
Отправлено: 22 Июля, 2014 - 20:59:05
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




DelphinPRO пишет:
вызывайте mysql_query внутри цикла


Смысл куда смотреть понятен, а вот, к сожалению, что с этим делать, нет.
 
 Top
DelphinPRO
Отправлено: 22 Июля, 2014 - 21:02:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
lastdays
Отправлено: 22 Июля, 2014 - 21:06:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Ну так, внимательнее бы.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. Ваши данные:
  4. 28FF820410140093 - 25.00
  5.  
  6.  
  7.  
  8. $addrs[0] это 28FF820410140093
  9. $addrs[1] это 25.00
  10. Все верно?
  11. а теперь ещё раз на запрос =>
  12. $sql = "INSERT INTO sensor_readings (sensor_id, sensor_value) VALUES ('$addrs[0]', '$addrs[1]')";
  13.  
  14.  


И почему это только одна запись там Улыбка
 
 Top
Divest
Отправлено: 22 Июля, 2014 - 21:11:12
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




[quote=DelphinPRO][/quote]Да мне больше чем понятно, что я полный нуб в этом. Есть идея, разбираюсь тихонько. И даже не думаю обижаться. И готов перечитывать, и не раз. Сижу читаю http://php.net/manual/ru/functio....mysql-query.php
Вот не дает мне эта статья особо ничего и все. Попробовал десять вариантов разных запросов. Вот если не разжевать мне на моем примере, ничего и не пойму.
(Добавление)
lastdays пишет:
Ну так, внимательнее бы.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. Ваши данные:
  4. 28FF820410140093 - 25.00
  5.  
  6.  
  7.  
  8. $addrs[0] это 28FF820410140093
  9. $addrs[1] это 25.00
  10. Все верно?
  11. а теперь ещё раз на запрос =>
  12. $sql = "INSERT INTO sensor_readings (sensor_id, sensor_value) VALUES ('$addrs[0]', '$addrs[1]')";
  13.  
  14.  


И почему это только одна запись там Улыбка


И тут я понимаю прекрасно, почему у меня одна запись только записывается в БД. Но понимаю это на каком-то "блондинистом" уровне. Прекрасно понял что на момент записи данных в БД, переменные $addrs[0] и $addrs[1] имеют в себе значение последних данных, которые были получены после
PHP:
скопировать код в буфер обмена
  1. foreach($dats as $dat){
  2.    if(strpos($dat,':')===false)continue;
  3.    $addrs = explode(':',$dat);
  4.         echo $addrs[0].' - '.$addrs[1].PHP_EOL.'<br/>';

Вот меня и интересует, как вместо echo $addrs[0].' - '.$addrs[1].PHP_EOL.'<br/>' получить что-то типа INSERT INTO sensor_readings (sensor_id, sensor_value) VALUES ('$addrs[0]', '$addrs[1]')
 
 Top
lastdays
Отправлено: 22 Июля, 2014 - 21:26:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Записать в переменную данные.

Вместо echo установить $update к примеру.
 
 Top
Divest
Отправлено: 22 Июля, 2014 - 21:48:56
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




lastdays пишет:
Записать в переменную данные.

Вместо echo установить $update к примеру.


Хорошо, я записал эти данные в переменную $update
При выводе данных из переменной $update, в данный момент мы получаем:
28FF820410140093 - 25.00
28FFE90310140074 - 25.50
Тогда встает новый вопрос, как эти данные записать в таблицу. Таблица имеет след. столбцы:
sensor_id
sensor_value
date_time
Где 28FF820410140093 это sensor_id, а 25.00 собственно sensor_value? Никак не могу понять. Реальным решением вижу mysql-query, но пока не могу понять как это вставить.
 
 Top
lastdays
Отправлено: 22 Июля, 2014 - 22:01:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.   if ( isset ($addrs[0],$update) )
  3.   mysql_query("INSERT INTO `sensor_readings` (`sensor_id`,`sensor_value`) VALUES ('".$addrs[0]."','".$update."');") or die();
  4.  
 
 Top
Divest
Отправлено: 22 Июля, 2014 - 22:34:32
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




lastdays пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2.   if ( isset ($addrs[0],$update) )
  3.   mysql_query("INSERT INTO `sensor_readings` (`sensor_id`,`sensor_value`) VALUES ('".$addrs[0]."','".$update."');") or die();
  4.  


Собственно это не помогло. Так-же записывает только последние данные в таблицу. Если у кого-то есть варианты, отпишите пожалуйста. Если найду решение, обязательно выложу
 
 Top
lastdays
Отправлено: 22 Июля, 2014 - 22:40:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Там где echo надо так:

PHP:
скопировать код в буфер обмена
  1.   $update[] = 'какие то данные';
 
 Top
Divest
Отправлено: 22 Июля, 2014 - 22:42:50
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




lastdays пишет:
Там где echo надо так:

PHP:
скопировать код в буфер обмена
  1.   $update[] = 'какие то данные';


Какие-то данные, это $update = $addrs[0].' - '.$addrs[1].PHP_EOL.;

К сожалению это не помогло. Сейчас нашел решение, но оно не является "универсальным". Проверю, напишу.
 
 Top
DelphinPRO
Отправлено: 22 Июля, 2014 - 22:50:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




ну елки-палки, неужели все так запущено? Внутри цикла - значит, внутри цикла

PHP:
скопировать код в буфер обмена
  1. $ch = curl_init();
  2.         CURLOPT_URL=>'http://255.255.255.255/getdev',
  3.         CURLOPT_RETURNTRANSFER=>true
  4. ));
  5. $data = curl_exec($ch);
  6.                
  7.                
  8. $dats = explode(';',$data);
  9. foreach($dats as $dat){
  10.         if(strpos($dat,':')===false)continue;
  11.         $addrs = explode(':',$dat);
  12.         echo $addrs[0].' - '.$addrs[1].PHP_EOL.'<br/>';
  13.         $sql = "INSERT INTO sensor_readings (sensor_id, sensor_value) VALUES ('$addrs[0]', '$addrs[1]')";
  14.         if(!mysql_query($sql)) {
  15.                 echo '<p><b>Data upload error!</b></p>';
  16.         } else {
  17.                 echo '<p><b>OK</b></p>';
  18.         }
  19. }


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Divest
Отправлено: 22 Июля, 2014 - 23:25:13
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




[quote=DelphinPRO][/quote]
Спасибо огромное. Да, к сожалению все так и запущено Огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB