Gå til innhold

flere databasetilkoblinger på samme "side"


Anbefalte innlegg

har et lite problem som eg støtte borti.

 

i ei php fil/side eg har så er det første som skjer er å koble seg opp mot en database.

dette er en mysql server, eg kobler til via mysql_pconnect.

 

eg tillegner ikke denne tilkoblingen et navn, eller variabel, så denne blir

default for hver gang eg kaller mysql_query.

 

men problemet er at eg skulle koble meg til enda en mysql database, litt lengre ned på siden. etter eg har gjort dette(tilegner tilkoblingen til en variabel) så får eg ikke til å koble til den forrige igjen, tilkoblingen er tapt på en måte.

 

er det noen andre løsninger på dette en å måtte legge begge tilkoblingene til en variabel? snakker om ca 40-50 sider her, så det er ikke like lett.

Lenke til kommentar
Videoannonse
Annonse

Tror det du trenger er en databaseklasse, da kan du opprette mange databaseobjekter, der alle har hver sin tilkobling (mysql_pconnect). Jeg bruker denne selvskrevne klassen:

 

/**
* The db class provides access to a MySQL database and easy
* data/result management.
*
* @author  Kim André Silkebækken <[email protected]>
*/
class db
{
/**
 * User name for the connection
 *
 * @var string $user
 */
private $user = '';

/**
 * Password for the connection
 *
 * @var string $pass
 */
private $pass = '';

/**
 * The database to connect to
 *
 * @var string $db
 */
private $db;

/**
 * The hostname running the MySQL server
 *
 * @var string $host
 */
private $host = 'localhost';

/**
 * The result returned from a query is stored here
 *
 * @var resource $result
 */
public $result;

/**
 * The object returned from the fetch_object() function
 *
 * @var object $object
 */
public $object;


/**
 * Creates a db instance (constructor function)
    *
    * @access public
 *
 * @param optional string $user
 * @param optional string $pass
 * @param string $db
 * @param optional string $host
 * @return boolean  True on successful connection, false if the connection failed.
 */
public function db($user, $pass, $db, $host)
{
 if (mysql_connect('localhost', $user, $pass))
 {
 	if (!mysql_select_db($db))
 	{
   $this->debug('Error while selecting the database');
   return false;
 	}
 }
 else
 {
 	$this->debug('Error while connecting to database.');
 	return false;
 }
 return true;
}

/**
 * Prints eventual error messages from MySQL as HTML comments.
    *
    * @access private
 *
 * @param string $message
 */
private function debug($message)
{
 $get_debug = $_GET['debug'];
 if ($get_debug == '1' && !empty($message))
 {
 	echo "\r\n".'<!-- MySQL debug: '. $message .' | MySQL says: '. strip_tags(@mysql_error()) .' -->'."\r\n\r\n";
 }
}

/**
 * This functions queries the database and stores the result
 * in the public variable $result.
    *
    * @access public
 *
 * @param string $sql
 * @return boolean
 */
public function query($sql)
{
 if (!$this->result = mysql_query($sql))
 {
 	$this->debug('Query error (query: '. $sql .')');
 	return false;
 }
 return true;
}

/**
 * Fetches an object from an optional result. If no result is
 * provided, the result from the last query is used (if available).
    *
    * @access public
 *
 * @param optional resource $result
 * @return mixed	(false on error, object on success)
 */
public function fetch_object($result = false)
{
 if (!$result && $this->result)
 {
 	if (!$this->object = mysql_fetch_object($this->result))
 	{
   $this->debug('Error while fetching object (class result)');
   return false;
 	}
 }
 else
 {
 	if (!$this->object = mysql_fetch_object($result))
 	{
   $this->debug('Error while fetching object (function result)');
   return false;
 	}
 }
 return $this->object;
}
}

 

Den kan brukes slik:

$db1 = new db('user','pass','db','host');
$db2 = new db('user2','pass2','db2','host2');

$db1->query("SELECT *"); // spør tilkobling nummer 1
$row = $db1->fetch_object(); // henter objekt fra resultatet
// kan også bruke resultatet på andre måter: mysql_num_rows($db1->result)

 

Jeg synes det er veldig praktisk. Bare spør hvis det er noe du lurer på!

 

Edit: kom på at den er skrevet for PHP5, så du må kanskje forandre litt hvis du skal bruke den under PHP4.

Endret av Lokaltog
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...