есть код:
class AminoAcid {
var $id;
var $season;
var $hue;
var $skin;
var $hair;
var $eyes;
function AminoAcid ($aa) {
foreach ($aa as $k=>$v)
$this->$k = $aa[$k];
}
}
function readDatabase($filename) {
// читать xml БД аминокислот
$data = implode("",file($filename));
$parser = xml_parser_create();
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($parser,$data,$values,$tags);
xml_parser_free($parser);
// цикл по этим структурам
foreach ($tags as $key=>$val) {
if ($key == "item") {
$molranges = $val;
// каждая пара вхождений массива это нижняя и верхняя
// границы диапазона для определения каждой молекулы
for ($i=0; $i < count($molranges); $i+=2) {
$offset = $molranges[$i] + 1;
$len = $molranges[$i + 1] - $offset;
$tdb[] = parseMol(array_slice($values, $offset, $len));
}
} else {
continue;
}
}
return $tdb;
}
function parseMol($mvalues) {
for ($i=0; $i < count($mvalues); $i++)
$mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
return new AminoAcid($mol);
}
$db = readDatabase("007Y1.xml");
print_r($db);
Результат: Array ( [0] => AminoAcid Object ( [id] => [season] => [hue] => - [skin] => 07NN [hair] => 08NN [eyes] => 06NN )
Это $db надо прописать в базу.
Помогите разобраться с этим,а то есть как $db прописать в базу MySQL
заранее спасибо
Спустя 46 минут, 3 секунды (6.11.2010 - 23:48) Sanchopansa написал(а):
ну это тебе вернуло массив объектов
сделай что-то типа этого:
сделай что-то типа этого:
foreach ($db as $item)
{
//перед этим нужно инициализаровать поджключение к БД ну и создать собсно таблицу в БД
$res = mysql_query("INSERT INTO `teble` (`id`, `season`, `hue` , `skin`, `hair`, `eyes`) VALUES (null, '{$item->season}', '{$item->hue}','{$item->skin}','{$item->hair}','{$item->eyes}'");
if ($res !== TRUE)
{
echo "Ошибка!";
}
}
Спустя 28 минут, 53 секунды (7.11.2010 - 00:17) udal76 написал(а):
не работает
пишет ошибка!
пишет ошибка!
Спустя 7 минут, 41 секунда (7.11.2010 - 00:25) Sanchopansa написал(а):
а ты создал таблицу в базе данных и произвел подключение?
это впринцыпе рабочее решение... добавь это после того как ты спарсил данные из XML файла
это впринцыпе рабочее решение... добавь это после того как ты спарсил данные из XML файла
$conn_id = mysql_connect('адрес твоего сервера Mysql', 'имя пльзователя', 'пароль');
mysql_select_db('имя твоей БД', $conn_id);
foreach ($db as $item)
{
if (!mysql_query("INSERT INTO `teble` (`id`, `season`, `hue` , `skin`, `hair`, `eyes`) VALUES (null, '{$item->season}', '{$item->hue}','{$item->skin}','{$item->hair}','{$item->eyes}'", $conn_id))
{
echo "Ошибка!";
}
}
Спустя 2 минуты, 40 секунд (7.11.2010 - 00:28) udal76 написал(а):
Подключение к базе изначально сделано и таблица тоже
Спустя 3 минуты, 34 секунды (7.11.2010 - 00:31) Sanchopansa написал(а):
ну а ты поменял в тексте INSERTa имя таблицы на твое и имена полей в которые заносятся данные?
Спустя 1 минута, 41 секунда (7.11.2010 - 00:33) udal76 написал(а):
конечно поменял
foreach ($db as $item)
{
if (!mysql_query("INSERT INTO `item` (`season`, `hue` , `skin`, `hair`, `eyes`) VALUES ('{$item->season}', '{$item->hue}','{$item->skin}','{$item->hair}','{$item->eyes}'"))
{
echo "Ошибка!";
}
}
Спустя 4 минуты, 51 секунда (7.11.2010 - 00:38) Sanchopansa написал(а):
А что так выводит?
foreach ($db as $item)
{
if (!mysql_query("INSERT INTO `teble` (`id`, `season`, `hue` , `skin`, `hair`, `eyes`) VALUES (null, '{$item->season}', '{$item->hue}','{$item->skin}','{$item->hair}','{$item->eyes}'"))
{
echo mysql_error();
die();
}
}
Спустя 3 минуты, 58 секунд (7.11.2010 - 00:42) udal76 написал(а):
У Вас есть ошибка в Вашем синтаксисе SQL; проверьте руководство, которое соответствует Вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом '' в линии 1
Спустя 3 минуты, 11 секунд (7.11.2010 - 00:45) Self написал(а):
"INSERT INTO `item`
SET `db` = ".mysql_real_escape_string(serialize($db))
Спустя 22 минуты, 16 секунд (7.11.2010 - 01:07) Sanchopansa написал(а):
2Self А чем тут поможет serialize()?
Забыл закрыть скобку
теперь должно работать!
Забыл закрыть скобку
foreach ($db as $item)
{
if (!mysql_query("INSERT INTO `teble` (`id`, `season`, `hue` , `skin`, `hair`, `eyes`) VALUES (null, '{$item->season}', '{$item->hue}','{$item->skin}','{$item->hair}','{$item->eyes}')"))
{
echo mysql_error();
die();
}
}
теперь должно работать!
Спустя 2 минуты, 53 секунды (7.11.2010 - 01:10) udal76 написал(а):
Sanchopansa СПАСИБО БОЛЬШОЕ!
Я ПЯТЬ ДНЕЙ МУЧАЮСЬ,СПАСИБО ЕЩЕ РАЗ,ВИДНО ПРОФИ
Я ПЯТЬ ДНЕЙ МУЧАЮСЬ,СПАСИБО ЕЩЕ РАЗ,ВИДНО ПРОФИ
Спустя 4 минуты, 36 секунд (7.11.2010 - 01:15) Sanchopansa написал(а):
Всегда пожалуйста... рад помочь