Re: [Phplib-users] DB_Sql question
Brought to you by:
nhruby,
richardarcher
From: Andrew C. <ph...@ev...> - 2005-11-09 01:10:06
|
Howdy, I haven't spent a lot of time dissecting the code in DB_Sql but, my understanding is that DB_Sql's connect() is an *internal* instance method, not intended for use like that. I would probably do the same thing by declaring a separate DB_Sql extension class for each database. That would be something like this: class DB_Example extends DB_Sql { var $classname = "db_example"; var $Host = "localhost"; var $Database = "DB1"; var $User = "example"; var $Password = "password"; var $Auto_Free = "true"; var $Halt_On_Error = "report"; } class DB_Example2 extends DB_Sql { var $classname = "db_example2"; var $Host = "localhost"; var $Database = "DB2"; var $User = "example2"; var $Password = "password2"; var $Auto_Free = "true"; var $Halt_On_Error = "report"; } Then, you could do basically the same thing this way: $exampledb = new DB_Example; $query = "SELECT name,id FROM FILE WHERE datatype='folder'"; $exampledb->query($query); while($exampledb->next_record()) { echo $exampledb->f(0) . "[" . $exampledb->f(1) . "]<br />\n"; } $exampledb2 = new DB_Example2; $query2 = "SELECT name,id FROM FILE WHERE datatype='folder'"; $exampledb2->query($query2); while($exampledb2->next_record()) { echo $exampledb->f(0) . "[" . $exampledb->f(1) . "]<br />\n"; } $exampledb->query($query); while($exampledb->next_record()) { echo $exampledb->f(0) . "[" . $exampledb->f(1) . "]<br />\n"; } This definitely works. Andrew Crawford Kelby Zorgdrager wrote: > Folks: > > Gotta question for you. I am experiencing a unexpected problem when > using the DB_Sql class. It appears that if I create a DB_Sql object to > one database (and perform a query) then create a second DB_Sql object > to another database (and perform a query), when I return to the first > object, it's connection state is invalid. Due to the architecture of > our app, I can not consolidate the two objects into one (that would be > reused). > > I have attached a sample as an example to show the problem. > > Assume for the example there are: > --> two databases, DB1 and DB2 > --> a table in each db (DB1.FILE and DB2.USER) > > I have attached two SQL files for the tables along with the example. > Any insight into why I am seeing this would be greatly appreciated. > > Thanks. > > KZ > > > ------------------------------------------------------------------------ > > <?php > include_once ("db_mysql.inc"); > > $dbConnection = new DB_Sql; > $dbConnection->Database = $dbName; > if (!$dbConnection->connect("DB1")) { > $error = "Failed to connect to $dbName"; > echo "Failed to initialize: $error<br>"; > exit; > } > > $dbConnection->query("SELECT name,id FROM FILE WHERE datatype='folder'"); > while($dbConnection->next_record()) { > echo "<BR>".$dbConnection->f(0)."[".$dbConnection->f(1)."]"; > } > > $dbConnection2 = new DB_Sql; > $dbConnection2->connect("DB2"); > $dbConnection->query("SELECT name,id FROM USER"); > while($dbConnection->next_record()) { > echo "<BR>".$dbConnection->f(0)."[".$dbConnection->f(1)."]"; > } > > /* > * when this is queried, it returns nothing.. even though it should > * return the same 'set' as the first time it was queried above. > */ > $dbConnection->query("SELECT name,id FROM FILE WHERE datatype='folder'"); > while($dbConnection->next_record()) { > echo "<BR>".$dbConnection->f(0)."[".$dbConnection->f(1)."]"; > } > ?> |