Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Подключение к двум БД


Автор: Win MK 32 14.2.2012, 21:13
Не получается, выдает ошибку Table 'diplom.tables' doesn't exist. Как я понял - путаются подключения. Почему так?

 Вот весь код

Код

<?php
define('DB_NAME','diplom');

$link = mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("information_schema",$link) or die (mysql_error());

$link2 = mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("diplom",$link2) or die (mysql_error());

mysql_query("set character_set_client    ='cp1251'");
mysql_query("set character_set_results    ='cp1251'");
mysql_query("set collation_connection    ='cp1251_general_ci'");



$sql = mysql_query("SELECT * FROM TABLES WHERE TABLE_SCHEMA='".DB_NAME."';",$link) or die(mysql_error());
while($tables = mysql_fetch_assoc($sql)){
    dump($tables);
    ?><table border="1">
       <tr>
          <th><?PHP echo $tables['TABLE_NAME'] ?></th>
          <td><?PHP echo "Записей:".$tables['TABLE_ROWS'] ?></td>
          <td><?PHP echo "След:".$tables['AUTO_INCREMENT'] ?></td>
      </tr>
        <tr><?PHP
        $sql2 = mysql_query("SHOW COLUMNS FROM ".$tables['TABLE_NAME'],$link2) or die(mysql_error());
        while($columns = mysql_fetch_assoc($sql2)){
            ?><th><?PHP echo $columns['Field'] ?></th><?PHP
        }
        ?></tr>
    </table><?PHP
}
mysql_close($link);
?>

Автор: krundetz 14.2.2012, 22:53
Win MK 32, а ошибку какую выдает?

а вообще ты путаешь установление двух разных соединений под разными пользователями с сервером баз данных и работу с двумя разными базами данных.

Возможно стоит попробовать устанавливать соединение под разными пользователями. 

Либо заменить localhost на 127.0.0.1, чтобы клиентская библиотека MySQL не пыталась соединиться с локальным сокетом, который по идеи один, для каждого пользователя. Но это уже полное ИМХО. Поищи подтверждение или опровержение моих догадок самостоятельно.

Автор: MoLeX 16.2.2012, 19:03
а зачем это надо то? 
пользователю даешь права на необходимую БД и используешь префикс при работе
Код

SELECT * FROM `database_1`.`table` as `d1t`, `database_2`.`table` as `d2t`

Автор: ksnk 16.2.2012, 19:33
http://ru.php.net/manual/en/function.mysql-connect.php
параметр new_link
Цитата

new_link
Если второй вызов функции mysql_connect() произошёл с теми же аргументами, то новое соединение не будет установлено. Вместо этого функция вернёт ссылку на уже установленное соединение. Параметр new_link может заставить функцию mysql_connect() открыть ещё одно соединение, даже если соединение с аналогичными параметрами уже открыто. В SQL safe mode этот параметр игнорируется.

Автор: krundetz 16.2.2012, 20:25
Цитата(ksnk @  16.2.2012,  19:33 Найти цитируемый пост)
В SQL safe mode этот параметр игнорируется.

Вот это не понял. Кто может разяснить?

Автор: ksnk 17.2.2012, 12:24
Цитата(krundetz @  16.2.2012,  20:25 Найти цитируемый пост)
Вот это не понял. Кто может разяснить? 

SQL safe mode - специальный режим запуска Mysql сервера. идеологически - что-то вроде safe mode в php - куча странных, на первый взгляд, ограничений.
В частности, в этом режиме нельзя открыть второй линк к той-же базе с тем-же аккаунтом, даже если захочется.

Проверить режим своего сервера - команда `show variables`.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)