define('DEBUG',true);
require_once 'library/factory.php';
require_once 'library/database/mysqli.php';
require_once 'includes/config.php';
$db = new SDatabase( Sconfig::getDatabaseSettings( 'base1' ) );
$db2 = new SDatabase( Sconfig::getDatabaseSettings( 'base2' ) );
$row = $db->get_query_object( 'SELECT id FROM table WHERE id=1' );
$row2 = $db2->get_query_object( 'SELECT id FROM table WHERE id=1' );
Вопрос: почему db это тоже самое, что и db2? А если создавать объекты в отдельных функциях то всё нормально работает (если короче - почему нельзя использовать их одновременно).
Спустя 13 часов, 52 секунды (26.11.2010 - 09:25) linker написал(а):
А в чем должна быть разница между db и db2?
Спустя 9 минут, 2 секунды (26.11.2010 - 09:34) sergeiss написал(а):
Цитата (Гость_Влад @ 25.11.2010 - 21:24) |
Есть код. |
Хороший код, красивый такой

Вот только надо разбираться именно с той библиотекой, которую ты используешь.
Цитата (Гость_Влад @ 25.11.2010 - 21:24) |
Вопрос: почему db это тоже самое, что и db2? |
Даже совершенно не зная эту твою библиотеку, можно предположить, что это разные объекты. Так что твой вопрос не понятен.
Спустя 3 часа, 47 минут, 28 секунд (26.11.2010 - 13:21) Гость_Влад написал(а):
разница между этими объектами заключается в том, что это два разных объекта класса работы с базой данных. При чём когда они создаются, классу передаются параметры соединения для разных баз. Если короче, я хочу использовать в скрипте две, а может больше, баз данных.
Пример кода я упростил. на деле имеется класс Factory в котором имеется метод, пусть будет getDB, в этом методе имеется статическая переменная (массив).
И сколько бы я объектов не созавал бы, всё равно все они будут одинаковые.
Пример кода я упростил. на деле имеется класс Factory в котором имеется метод, пусть будет getDB, в этом методе имеется статическая переменная (массив).
class SFactory{
function &getDB( $name = 'default' ){
static $instances = array();
if( !array_key_exists( $name, $instances ) ){
$instances[$name] = new SDatabase( Sconfig::getDatabaseSettings( $name ) );
}
return $instances[$name];
}
}
$db =& SFactory::getDB( 'base1' );
И сколько бы я объектов не созавал бы, всё равно все они будут одинаковые.
Спустя 2 минуты, 31 секунда (26.11.2010 - 13:24) sergeiss написал(а):
Цитата (Гость_Влад @ 25.11.2010 - 21:24) |
(если короче - почему нельзя использовать их одновременно). |
Так я и не понял до сих пор: почему ты так решил? Может быть, библиотека "кривая" или ты их неправильно используешь?
Спустя 2 минуты, 26 секунд (26.11.2010 - 13:26) Гость_Влад написал(а):
Вернее даже будет сказать, что не одинаковые, а соеденяются с одной базой.
Объекты разные, база одна и та же. Как сделать.
Сразу хочу сказать, что четвёртый параметр mysql_connect() поставленный в true не помогает.
Объекты разные, база одна и та же. Как сделать.
Сразу хочу сказать, что четвёртый параметр mysql_connect() поставленный в true не помогает.
Спустя 19 минут, 17 секунд (26.11.2010 - 13:46) linker написал(а):
class SFactory
{
protected static $instances = array();
function getDB($name = 'default')
{
return !isset(self::$instances[$name])
? self::$instances[$name] = new SDatabase(Sconfig::getDatabaseSettings($name))
: self::$instances[$name];
}
}
$db = SFactory::getDB('base1');
Спустя 1 минута, 4 секунды (26.11.2010 - 13:47) sergeiss написал(а):
Ну так и что, что БД одна и та же? Подключения-то разные!!! С точки зрения скрипта работа с ними идет как с разными БД. А то, что результаты одинаковые возвращаются... Так было бы странно, если бы было по-другому.
...или я что-то недопонял?
...или я что-то недопонял?
Спустя 8 минут, 45 секунд (26.11.2010 - 13:55) Гость_Влад написал(а):
Цитата (sergeiss @ 26.11.2010 - 10:47) |
...или я что-то недопонял? |
Не понял. Я передаю классу базы настройки для подключения к разным базам.
Спустя 47 минут, 10 секунд (26.11.2010 - 14:43) linker написал(а):
Вот жеж
class SFactory
{
protected static $instances = array();
public static function getDB($name = 'default')
{
return !isset(self::$instances[$name])
? self::$instances[$name] = new SDatabase(Sconfig::getDatabaseSettings($name))
: self::$instances[$name];
}
}
$db = SFactory::getDB('base1');
Спустя 2 часа, 47 минут, 14 секунд (26.11.2010 - 17:30) Animir написал(а):
Цитата (linker @ 26.11.2010 - 11:43) |
Sconfig::getDatabaseSettings($name) |
покажите эту функцию
Спустя 28 минут, 37 секунд (26.11.2010 - 17:58) Гость_Влад написал(а):
Так тоже не работает. Ничего же ведь не изменилось. Просто ты массиввынес из метода.
$db = SFactory::getDB('base1');
$db2 = SFactory::getDB('base2');
здесь код в котором оба объекта работают с base2;
Спустя 26 секунд (26.11.2010 - 17:59) Guest написал(а):
Цитата (Animir @ 26.11.2010 - 14:30) | ||
покажите эту функцию |
class Sconfig{
function getdatabaseSettings($name){
$databases = array( 'base1' => array('name'=>'base','user'=>'user','password'=>'password','host'=>'localhost','use'=>true),
'base2' => array('name'=>'base2','user'=>'user','password'=>'password','host'=>'localhost','use'=>true)
);
return $databases[$name];
}
}
Спустя 44 минуты, 53 секунды (26.11.2010 - 18:44) Гость_Влад написал(а):
всем спасибо))) mysql класс кривоват был))))