Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> циклический sql запрос postgresql, отображается только последнее значение 
:(
    Опции темы
mastertgtu
Дата 31.3.2010, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



Добрый день, коллеги!
Помогите решить простую задачку. В таблице corporate хранятся имена хостов (hostname) и IP адрес (hostip). 
В файле iplist.txt сохранены нужные нам IP адреса. 
Нужно выбрать соответствующие hostname, hostip, сравнив значение hostip из файла.
У меня отображается результат только последнего запроса.

Код

$farr = file( "iplist.txt" );
for ($i=0; $i<count($farr); $i++)
{
$sql = "SELECT hostname,hostip FROM bypages WHERE hostip ='".$farr[$i]."';";
//echo $sql."<br>";
$rez = pg_query($sql);
while ($row = pg_fetch_assoc($rez))
        {
echo $row["hostname"]."&nbsp;".$row["hostip "]."<br>";
        }
}



Это сообщение отредактировал(а) mastertgtu - 31.3.2010, 14:39
PM MAIL   Вверх
skyboy
Дата 31.3.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(php.net/file)

Note: Each line in the resulting array will include the line ending, unless FILE_IGNORE_NEW_LINES is used, so you still need to use rtrim() if you do not want the line ending present. 

У тебя в конце каждого ip идет перенос строки. а в БД IP хранятся без него. а после последней строки файла переноса строки нет.

Добавлено через 3 минуты и 40 секунд
если же говорить о подходе в целом, лучше было бы один раз загружать файл с IP в temporary table и вместо поиска в цикле, выполнить запрос с join'ом временной таблицы с ip и bypages.
и использовать pg_query_params вместо pg_query, чтоб избежать потенциальных неприятностей, если вдруг в файле окажутся не только цифры с точками, а, скажем, нечто с кавычками.
PM MAIL   Вверх
mastertgtu
Дата 31.3.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



Цитата
У тебя в конце каждого ip идет перенос строки.


skyboy, просто я делаю в каждой строчке разный SELECT:

Код

SELECT hostname,hostip FROM bypages WHERE hostip ='10.10.2.20';  
SELECT hostname,hostip FROM bypages WHERE hostip ='10.10.3.1';
....  



Цитата

лучше было бы один раз загружать файл с IP в temporary table и вместо поиска в цикле, выполнить запрос с join'ом временной таблицы с ip и bypages. и использовать pg_query_params вместо pg_query, чтоб избежать потенциальных неприятностей, если вдруг в файле окажутся не только цифры с точками, а, скажем, нечто с кавычками.


а можете пример показать?
PM MAIL   Вверх
skyboy
Дата 31.3.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(mastertgtu @  31.3.2010,  13:50 Найти цитируемый пост)
skyboy, просто я делаю в каждой строчке разный SELECT:

ты вручную задаешь ip? я думал, что ты читаешь из файла. по крайней мере, код, который ты привел, читает из файла. при помощи функции file. И эта функция, считывая файл и сохраняя его как массив, добавляет в конец каждого элемента символ конца строки, если ей не указать вполне определенный параметр(FILE_IGNORE_NEW_LINES)
Цитата(mastertgtu @  31.3.2010,  13:50 Найти цитируемый пост)
а можете пример показать? 

php.net/pg_query_params - немало примеров.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.