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 скрипт добавление данных в MySQL

 PHP.SU

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


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

> Описание: в цикле отрабатывается команда insert только 1 раз
kitaeca
Отправлено: 07 Октября, 2011 - 11:45:06
Post Id


Новичок


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


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




Кто подскажет где собаку зарыли:
По текстовому файлу пробегаю циклом и данные в табличку ложу
Ложится только первая запись. Только после первого запуска.
Кто-то где-то что- то запоминает и второй раз работать не хотит.
FreeBSD
#!/usr/local/bin/php
<?
do {
$st=fgets($fo);
$pole1=trim(substr($st,0,15)); # ot
$pole2=trim(substr($st,19,6)); # port_ot
$pole3=trim(substr($st,27,15)); # to
$pole4=trim(substr($st,46,6)); # port_to
$pole5=trim(substr($st,54,4)); # proto
$pole6=trim(substr($st,69,10)); # bates all
mysql_query("insert into `traffic` values('$pole1','$pole2','$pole3','$pole4','$pole5','$pole6','$pole7')");
} while (!feof($fo));
?>
 
 Top
Мелкий Супермодератор
Отправлено: 07 Октября, 2011 - 11:55:26
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Вопрос - а fopen-то где?


-----
PostgreSQL DBA
 
 Top
JohnnyB
Отправлено: 07 Октября, 2011 - 12:26:16
Post Id


Новичок


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


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




kitaeca пишет:
Ложится только первая запись. Только после первого запуска.

Первая запись имеется ввиду $pole1, или вообще все $pole* но только один прогон по циклу?
 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Октября, 2011 - 12:39:14
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




Жоско...
Мелкий пишет:
fopen-то где?

Ага и:
PHP:
скопировать код в буфер обмена
  1. $separator = "---xxx---"; // чем там у вас данные разделяются?
  2. list($pole1,$pole2,$pole3,$pole4,$pole5,$pole6) =
  3.   explode($separator,$st);
 
 Top
kitaeca
Отправлено: 10 Октября, 2011 - 03:33:11
Post Id


Новичок


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


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




Извините, ребята, но много среди вас философофФ.
Если данные ложатся, значит есть и опен и брат ганс Клозе
Данные не разделяются , а вырезаются из строки (только по секрету: substr)
Если после mysql_query выводить ЭХО, то ВСЕ! переменные выводятся красиво и меняют значения в цикле.

В строке mysql_query остается одна лежащая грабля с дохлой кошкой : mysql_query отрабатывает 1 раз, занося данные в таблицу. Появляется 1 запись. Повторный запуск скрипта нечего не дает. Может есть какие либо переменные окружения, настройки в php или MySql, что sql думает чего я так часто буду работать , я вот только что вставила....
 
 Top
LIME
Отправлено: 10 Октября, 2011 - 03:50:23
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




возможно меня китайца философом обзовет
ну и пусть
резкну ))
kitaeca а Клозе для мускуля у вас случаем не сразу после запроса в цикле?
а ошибки у вас выводятся?
и еще будет куча философских вопросов если не приведете более подробный код

п.с.: эЭх... стану телепатом
 
 Top
Мелкий Супермодератор
Отправлено: 10 Октября, 2011 - 09:31:12
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




kitaeca пишет:
Если данные ложатся, значит есть и опен и брат ганс Клозе

Ну извините, быть пророком трудно. Что привели - от того и отталкиваемся в порядке вероятности события. Все возможные варианты охватывает вот эта статья: phpfaq.ru/debug

Может, у вас вовсе уникальный ключ стоит на не фигурирующее в запросе поле - тогда, само собой, возможно вставить только 1 строку со значением по-умолчанию. Гадать долго можно.


-----
PostgreSQL DBA
 
 Top
kitaeca
Отправлено: 10 Октября, 2011 - 09:38:10
Post Id


Новичок


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


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




#!/usr/local/bin/php
<?
$f=date("Ymd")-1;
$f=$f.".rl1"; # name the file for boot to sql
$d="/usr/home/admin/traflog_i/"; # directory whee file
$f=$d.$f;
$fo=fopen($f,"r");
// skip 4 lines
for ($i=1;$i<=4;$i++) {
$st=fgets($fo);
}
include("setup.php");
$conn=mysql_connect($host,$mysql_user,$mysql_pass) or DIE("not connect to MySql");
@mysql_select_db("firewall") or die("not select base firewall");
// GoGo!
$pole7=date("Ymd")-1; # date
do {
# echo $pole1." --> ".$pole3." = ".$pole6."\r\n";
# echo $result."-" ;
$st=fgets($fo);
$pole1=trim(substr($st,0,15)); # ot
$pole2=trim(substr($st,19,6)); # port_ot
$pole3=trim(substr($st,27,15)); # to
$pole4=trim(substr($st,46,6)); # port_to
$pole5=trim(substr($st,54,4)); # proto
$pole6=trim(substr($st,69,10)); # bates all
if (empty($pole1)) {break;}
mysql_query("insert into `traffic` values('$pole1','$pole2','$pole3','$pole4','$pole5','$pole6','$pole7')");
} while (!feof($fo));

$sql_clo=mysql_close($conn);
$fc=fclose($fo);
?>
(Добавление)
Вот собственно творение от начала до конца. Может мысля зашивелится. Я пока по ссылке фаг поизучаю
 
 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