[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Два вызова MySQL в одном PHP
kss
Здравствуйте, есть скрипт, где идет два вызова к разным базам. В итоге сужествует конфликт:
Table 'adminch_test.lm_list' doesn't exist но скрипт должен вызывать таблицу lm_list не из базы adminch_test. а из другой.
Пример выборки из первой базы:
$result  = $main->db->fetch($main->db->query('SELECT * FROM `lm_list` where id=\''.$n.'\''));

я не знаю как и где происходит соединение.

А вторая так:
include("config.php");
mysql_connect($server,$user,$password) OR DIE("Не могу создать соединение ");
mysql_select_db("ft",$name) or die(mysql_error());
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
mysql_query("UPDATE `pg_serverlist` SET `server_globalid` = '0' ,
`server_addr` = '0',
`server_stoptime` = '0' WHERE `server_id` = '"
. $i['server_id'] . "'");

Помогите. пожалуйста, моему скрипту соорентироваться..



Спустя 14 минут, 18 секунд (28.02.2012 - 10:52) Placido написал(а):
Конечно странно, как можно не знать как и где происходит соединение, но, тем не менее, всегда можно указать имя бд в самом запросе через точку перед именем таблицы, независимо от того, какая база выбрана при соединении.
query('SELECT * FROM `имя другой базы`.`lm_list` where id=\''.$n.'\''));


Спустя 1 минута, 38 секунд (28.02.2012 - 10:53) kss написал(а):

$db = new mysql;
$db->connect();

$sql_encoding = 'cp1251';
$sql_suffix = '_general_ci';

$db->query("SET `collation_connection` = '{$sql_encoding}{$sql_suffix}'");
$db->query("SET `collation_database` = '{$sql_encoding}{$sql_suffix}'");
$db->query("SET `collation_server` = '{$sql_encoding}{$sql_suffix}'");
$db->query("SET NAMES '{$sql_encoding}'");
$db->query("SET `character_set_client` = '{$sql_encoding}'");
$db->query("SET `character_set_connection` = '{$sql_encoding}'");
$db->query("SET `character_set_database` = '{$sql_encoding}'");
$db->query("SET `character_set_results` = '{$sql_encoding}'");
$db->query("SET `character_set_server` = '{$sql_encoding}'");


Нашел как к первой происходит подключение

Спустя 5 минут, 24 секунды (28.02.2012 - 10:59) kss написал(а):
Цитата (Placido @ 28.02.2012 - 07:52)
Конечно странно, как можно не знать как и где происходит соединение, но, тем не менее, всегда можно указать имя бд в самом запросе через точку перед именем таблицы, независимо от того, какая база выбрана при соединении.
query('SELECT * FROM `имя другой базы`.`lm_list` where id=\''.$n.'\''));

Твой совет не помог

Спустя 32 минуты, 43 секунды (28.02.2012 - 11:31) Visman написал(а):
Где создается $main?
$result  = $main->db->fetch($main->db->query('SELECT * FROM `lm_list` where id=\''.$n.'\''));

Почему бы не создать по его типу второе подключение к другой базе?

Спустя 23 минуты, 4 секунды (28.02.2012 - 11:54) Placido написал(а):
Цитата (kss @ 28.02.2012 - 09:59)
Твой совет не помог

У меня все работает.
Это PDO, по-видимому?
А так?
$result = $main->db->query('SELECT * FROM `имя другой базы`.`lm_list` where id=\''.$n.'\'')->fetch();

Спустя 2 часа, 46 минут, 1 секунда (28.02.2012 - 14:40) twin написал(а):
Вы путаете таблицы с базами данных. Для каждой базы нужен свой коннект. И указатель на соединение, который вернет функция mysql_connect() нужно вторым параметром подставить в mysql_query() По умолчанию используется последнее открытое соединение.

Спустя 1 час, 41 минута, 56 секунд (28.02.2012 - 16:22) Placido написал(а):
Цитата (twin @ 28.02.2012 - 13:40)
Вы путаете таблицы с базами данных. Для каждой базы нужен свой коннект. И указатель на соединение, который вернет функция mysql_connect() нужно вторым параметром подставить в mysql_query() По умолчанию используется последнее открытое соединение.

Не путаю. Я, правда, не пробовал такой финт на хостинге, но локалхосте это спокойно работает.
И из консоли, и с использованием mysql_query(), и с PDO
Свернутый текст
mysql> use football
Database changed
mysql> show tables;
+--------------------+
| Tables_in_football |
+--------------------+
| cities |
| coaches |
| coaches_teams |
| countries |
| countries6 |
| matches |
| menu |
| players |
| players_teams |
| referees |
| results |
| seasons |
| stadiums |
| stages |
| teams |
| tournaments |
+--------------------+
16 rows in set (0.32 sec)

mysql> use hlighter
Database changed
mysql> show tables;
+--------------------+
| Tables_in_hlighter |
+--------------------+
| msgs |
+--------------------+
1 row in set (0.04 sec)

mysql> select id from msgs;
+----+
| id |
+----+
| 1 |
| 6 |
| 7 |
| 8 |
+----+
4 rows in set (0.00 sec)

mysql> select id from football.matches limit 4;
+-----+
| id |
+-----+
| 515 |
| 556 |
| 595 |
| 526 |
+-----+
4 rows in set (0.00 sec)

mysql>
Быстрый ответ:

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