Требуется сделать следующее: Есть 2 базы данных на 1 сервере. Нужно написать импорт из 1 базы в другую. Я написал, но почему-то не все записи импортируются. Сделал следующее: PHP: <?php function SelectData($dir_id) { if ($link = @mysql_connect("localhost","root","123456")) { if (!mysql_select_db("db1", $link)) { Error("mysql_select_db"); } } else { echo mysql_error(); } $sql = mysql_query("select * from `news_news` where `dir_id` = ".$dir_id); while($row = mysql_fetch_array($sql)) { $Records[] = new Element($row['id'], $row['date'], $row['name'], '0', $row['announce'], $row['body'], $row['img'], $row['sort_order'], $row['publish'], $row['credate'], $row['change_date'], $row['lang']); } mysql_free_result($sql); mysql_query("use db2"); return $Records; ?> Получаем массив объектов Element Следовательно: PHP: <?php $data = SelectData(123); ?> здесь я так понимаю считывается информация из db1 и записывается в массив + освобождается запрос и для использования выбирается db2. А потом: PHP: <?php foreach($data as $d) { $sql = "insert into `news_news` (`Имена полей`) values ('$d->getId() и.т.д по методам')"; mysql_query($sql); } ?> Должны все записи из db1 записаться в db2. где db1 - база из которой нужно сделать импорт, и db2 база в которую нужно записать. Да еще структура у обеих баз данных идентичная. Может я что нить недопонимаю, но по идее все должно работать. Всем заранее спасибо за помощь.
Уже разобрался... Поля нужно было обрабатывать mysql_escape_string, иначе получался неправильный запрос
А вообще как можно было более грамотно это сделать, чтобы например избавиться от запросов к БД в цикле?
1) Допустим есть компания и у нее сеть корпоративных сайтов на 1 движке, но с разной информацией в БД. 2) Нужно сделать импорт новостей из основной базы в базу одного из корпоративных сайтов. (при идентичной структуре)
OOPS! ступил. сорри... ну тогда SELECT а потом в цикде INSERT какие трудности-то? ты же все правильно делаешь. только ключи можно получить array_keys() и т.д. что б не особо париться.