| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Класс для работы с несколькими mysql |
| Автор: Zmiuko 31.5.2010, 14:19 | ||
| Вопрос такой. Работаю с mysql базой. Написал собственный класс.
Проблема в следующем. 1 скрипт $_a = new Sql('localhost', 'root', '', 'table1', 'utf8'); много-много циклов - работает идеально 2 скрипт $_w = new Sql('localhost', 'root', '', 'table2', 'cp1251'); много-много циклов - работает идеально НО! Работаю к примеру с $_a, произвожу выборку из таблицы. Затем мне необходимо сверить данные из нее с данными в таблице table2. и тут выходит, что в одном скрипте $_a = new Sql('localhost', 'root', '', 'table1', 'utf8'); $_w = new Sql('localhost', 'root', '', 'table2', 'cp1251'); не работает... В чем тут может быть дело? |
| Автор: Zmiuko 31.5.2010, 14:39 | ||
| Имею ввиду что начиная работу с $_a = new Sql('localhost', 'root', '', 'table1', 'utf8'); - все ок. Внутри скрипта делаю $_w = new Sql('localhost', 'root', '', 'table2', 'cp1251'); чтобы к примеру вывести потом выборку из $_w по $row из $_a , то скрипт даже $_a не показывает. Не могу понять отчего класс себя так ведет. Добавлено через 8 минут и 48 секунд Изменил скрипт:
Один фиг, второй экземпляр класса "гасится"... |
| Автор: нуп 31.5.2010, 15:14 |
| А зачем столько объектов вызывать? Сделай 1 глобальный, и думаю твоя проблема решиться |
| Автор: Zmiuko 31.5.2010, 15:16 |
| Кода больно много. Пытаюсь засунуть несколько подключений по экземплярам данного класса. Хз... не панацея... просто как мне быть? Добавлено через 2 минуты и 41 секунду Ну даже допустим $_a - глобальный объект делаем $_w = $_a->sql('localhost', 'root', '', 'table2', 'cp1251'); и опять нифига не работает. Добавлено через 5 минут и 33 секунды Вопрос даже немного по-другому звучит. Куда теряется второй экземпляр, да еще съедает первый...? Процедурно решать проблему не хотелось бы. |
| Автор: patap 31.5.2010, 15:37 | ||
| ну как я понял у тебя тут проблема в том, что когда ты создаешь второй объект $_w, то соединение с БД в объекте $_a пропадает, ну точнее не пропадает, а заменяется на соединением которое использует объект $_w. на стадии разработки, стоит избегать подавление ворнингов и т.д @ сделай такой тест
|
| Автор: Zmiuko 31.5.2010, 15:41 |
| Ну да, получается так. |
| Автор: Zmiuko 31.5.2010, 16:01 |
| Выводит Table 'table2.table1' doesn't exist Добавлено через 5 минут и 3 секунды $mmmmmmmm = new Sql('localhost', 'root', '', 'table1'); $nnnnnnnnnn = new Sql('localhost', 'root', '', 'table2'); $res2 = $mmmmmmmm->query("SELECT * FROM `pole123_table1` WHERE `type`='mount'"); $res1 = $nnnnnnnnnn->query("SELECT * FROM `pole125_table2` where entry='11729' "); // Table 'table2.table1' doesn't exist |
| Автор: Zmiuko 31.5.2010, 16:25 |
| Не могу никак понять в чем дело... первый указанный класс верен. Отчего не второй экземпляр цепляет первый, понять не могу. |
| Автор: Zmiuko 31.5.2010, 16:48 |
| Прошу помощи в написании класса, чтобы в двух и более объектах шли разные подключения к разным базам. (( |
| Автор: gcc 31.5.2010, 16:54 |
| отсоединится с одной, а потом подключится к другой... Добавлено @ 16:55 тем более только 2 запроса SELECT |
| Автор: Zmiuko 31.5.2010, 16:58 |
| Но если тоже самое повторить процедурно, то дисконнекта не требуется, все работает. Может я допускаю в классе какую оплошность? |
| Автор: patap 31.5.2010, 17:08 | ||
вот должно помочь
http://ua.php.net/mysql_connect - там почитай про new_link |
| Автор: gcc 31.5.2010, 17:09 | ||
| может быть поставить в не конструктор, а в метод... конструктор загружается самый первый во всех классах... может быть проблема в этом типо:
а тебе все равно нужно будет отсоединятся, почему ты не можешь отсоединится, а потом переподключится? |
| Автор: Zmiuko 31.5.2010, 17:12 |
| И правда, помогло!.. Добавлено через 2 минуты и 16 секунд resource mysql_connect ([string server [, string username [, string password [, bool new_link]]]]) bool new_link - верно все, не обращал никогда внимания, спасибо |