[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с выборкой из файла
volon
Здравствуйте!

Сразу скажу,что я не программист, а администратор.. Но партия сказала модифицировать программку, которая написана на php.. и вот возникли проблемы..

Помогите-подскажите, пожалуйста...

Проблема: есть файл формата: [название приложения] [версия приложения]
Например: apache 2.0.63
mysql 5.1.2.3

я пишу: $qwe=shell_exec("cat /tmp/123 | awk {'print $1'}"); - выбирается первый столбец как единое целое...

apache
mysql

Такой столбец нельзя занести в БД - заносится как одно.... Как мне обработать запрос, какими функциями, чтоб в БД можно было занести [название приложения] в первый столбец, [версия приложения] - второй столбец, и так по всем строчкам в файле....

Я прочитал и интернет, и книги - но никак не получается сделать этого....

Помогите, кто чем может)))



Спустя 1 час, 17 минут, 1 секунда (15.11.2010 - 14:14) linker написал(а):
Например так
$apps = file('/tmp/123', FILE_IGNORE_NEW_LINES);
$items = array();
foreach($apps as $app)
{
list($name, $version) = explode(' ', $app);
$items[] = "('" . $name . "', '" . $version . "')";
}
mysql_query("INSERT INTO `table` (`name`, `version`) VALUES " . implode(',', $items));

Спустя 2 часа, 45 минут, 5 секунд (15.11.2010 - 16:59) volon написал(а):
Не хочет оно работать(((...

если после $items[] = "('" . $name . "', '" . $version . "')"; поставить echo ("<P> $name <P>"); то пишет просто array и в таблице пустота на иесте версии и продукта

Спустя 17 часов, 20 минут, 20 секунд (16.11.2010 - 10:20) linker написал(а):
$apps = file('/tmp/123', FILE_IGNORE_NEW_LINES);
$items = array();
foreach($apps as $app)
{
echo $app . '<br>';
list($name, $version) = explode(' ', trim($app));
$items[] = "('" . $name . "', '" . $version . "')";
}
mysql_query("INSERT INTO `table` (`name`, `version`) VALUES " . implode(',', $items));
Что выводит echo?

Спустя 36 минут, 5 секунд (16.11.2010 - 10:56) Guest написал(а):
просто Array

Спустя 5 минут, 42 секунды (16.11.2010 - 11:01) linker написал(а):
Быть того не может. выполни код, который я привел и скажи что выводит на экран.

Спустя 3 минуты, 37 секунд (16.11.2010 - 11:05) Guest написал(а):
извигяюсь, соврал...

вообще ничего не выводит

Спустя 1 минута, 52 секунды (16.11.2010 - 11:07) Guest написал(а):
так... опять соврал... выводит файл... просто задал не имя файла на прямую, а в виде ссылки... прошу подождать, сейчас заново протестирую...

Спустя 39 минут, 53 секунды (16.11.2010 - 11:47) Guest написал(а):
сплю мало, невнимательность дикая(((

приведённый код вроде бы нормально отрабатывает, но выявилось ряд других ошибок, которые не связаны с приведённым выше кодом...

одна из них - параллельно с продуктом и версией в БД нужно вносить ещё прамари кей id_product ... отсыда вопросы - как правильно синтактически это сделать и откуда лучше брать уникальные цифры каждый раз при вводе - рандом или цикл организовать какой-нибудь?

Спустя 30 минут, 58 секунд (16.11.2010 - 12:18) linker написал(а):
Поставь на соответствующее поле автоинкремент.

Спустя 6 часов, 10 минут, 19 секунд (16.11.2010 - 18:28) Guest написал(а):
linker, спасибо большое за помощь)))) всё заработало))) только нужно из инсёрта убрать кавычки из имени таблицы wink.gif (если ещё кто-то читать будет)))

Спустя 18 часов, 2 минуты, 43 секунды (17.11.2010 - 12:31) Guest написал(а):
linker, можно ещё вопросик?

как модифицировать вставку в таблицу
if (!mysql_query("INSERT INTO products (name,version) VALUES " . implode(',', $items)))
, если нужно ещё вставить одно значение $number ... а то что-то с синтаксисом разобраться не могу - привык в стандартным вставкам

Спустя 51 минута, 18 секунд (17.11.2010 - 13:22) linker написал(а):
Если правильно понял, то
foreach($apps as $app)
{
echo $app . '<br>';
list($name, $version) = explode(' ', trim($app));
$items[] = "('" . $name . "', '" . $version . "', '" . $number . "')";
}
mysql_query("INSERT INTO `table` (`name`, `version`, `number`) VALUES " . implode(',', $items));

Спустя 1 час, 50 минут, 28 секунд (17.11.2010 - 15:13) Guest написал(а):
криво я написал, не совсем так...
name и version находятся в значении implode, а number в переменной number_2.... куда поместить нужно number_2, чтоб значение поместилось в БД?

Спустя 1 час, 5 минут, 43 секунды (17.11.2010 - 16:18) linker написал(а):
Если поле присутствует в данной таблице
$items[] = "('" . $name . "', '" . $version . "', '" . $number_2 . "')";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.