Сразу скажу,что я не программист, а администратор.. Но партия сказала модифицировать программку, которая написана на 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 и в таблице пустота на иесте версии и продукта
если после $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);Что выводит echo?
$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));
Спустя 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 ... отсыда вопросы - как правильно синтактически это сделать и откуда лучше брать уникальные цифры каждый раз при вводе - рандом или цикл организовать какой-нибудь?
приведённый код вроде бы нормально отрабатывает, но выявилось ряд других ошибок, которые не связаны с приведённым выше кодом...
одна из них - параллельно с продуктом и версией в БД нужно вносить ещё прамари кей id_product ... отсыда вопросы - как правильно синтактически это сделать и откуда лучше брать уникальные цифры каждый раз при вводе - рандом или цикл организовать какой-нибудь?
Спустя 30 минут, 58 секунд (16.11.2010 - 12:18) linker написал(а):
Поставь на соответствующее поле автоинкремент.
Спустя 6 часов, 10 минут, 19 секунд (16.11.2010 - 18:28) Guest написал(а):
linker, спасибо большое за помощь)))) всё заработало))) только нужно из инсёрта убрать кавычки из имени таблицы
(если ещё кто-то читать будет)))

Спустя 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, чтоб значение поместилось в БД?
name и version находятся в значении implode, а number в переменной number_2.... куда поместить нужно number_2, чтоб значение поместилось в БД?
Спустя 1 час, 5 минут, 43 секунды (17.11.2010 - 16:18) linker написал(а):
Если поле присутствует в данной таблице
$items[] = "('" . $name . "', '" . $version . "', '" . $number_2 . "')";