PHPBuilder - PHPLib and Multiple Databases Page 3



RSS Twitter
Articles Databases

PHPLib and Multiple Databases - Page 3

by: Peter Moulding
|
November 7, 2000

Expanding PHPLIB

PHPLIB accesses databases through an object created from class DB_Sql. Db_mysql.inc includes the DB_Sql class as modified for MySQL. We will extend DB_Sql by adding code to common.php3, after the line that includes db_mysql.inc.
DB_Sql contains many functions to perform queries. The one we want to change is:

<?php

 
/* public: connection management */
function connect($Database ""$Host ""$User ""$Password "") {
    
/* Handle defaults */
    
if ("" == $Database)
        
$Database $this->Database;
    if (
"" == $Host)
        
$Host     $this->Host;
    if (
"" == $User)
        
$User     $this->User;
    if (
"" == $Password)
        
$Password $this->Password;
 
    
/* establish connection, select database */

    
if ( == $this->Link_ID ) {
         
$this->Link_ID=mysql_pconnect($Host$User$Password);
        if (!
$this->Link_ID) {
            
$this->halt("pconnect($Host, $User, \$Password) failed.");
            return 
0;
        }
 
        if (!@
mysql_select_db($Database,$this->Link_ID)) {
            
$this->halt("cannot use database ".$this->Database);
            return 
0;
        }
    }
 
    return 
$this->Link_ID;
}

?>
Find the connect() function in your db_mysql.inc (or the .inc for your database), then copy it in to common.php3 somewhere after the include of db_mysql.inc. You will have to wrap it in a class definition as described at the end of this article.
I find the code hard to read. Therefore, the first thing to do is make the copied code readable:

<?php

/* public: connection management */

function connect($Database ""$Host ""$User ""$Password "") {
    
/* Handle defaults */
    
if ("" == $Database) {
        
$Database $this->Database;
    }
    if (
"" == $Host) {
        
$Host     $this->Host;
    }
    if (
"" == $User) {
        
$User     $this->User;
    }
    if (
"" == $Password) {
        
$Password $this->Password;
    }
    
/* establish connection, select database */
    
if ( == $this->Link_ID ) {
        
$this->Link_ID=mysql_pconnect($Host$User$Password);
        if (!
$this->Link_ID) {
            
$this->halt("pconnect($Host, $User, \$Password) failed.");
            return 
0;
        }
        if (!@
mysql_select_db($Database,$this->Link_ID)) {
            
$this->halt("cannot use database ".$this->Database);
            return 
0;
        }
    }
    return 
$this->Link_ID;
}

?>
I indented the code so the levels let me match the brackets, with the enclosed code. This avoids errors caused by missing brackets. I added brackets to single lines. PHP lets you get away without brackets around single lines of code after if statements. As soon as you add extra code, the shortcut fails. I suggest always use the brackets to avoid errors when you add code later.

« Previous Page
1
|
2
|
3
|
4
|
5
|
6
Next Page »

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Peter Moulding

Comment:



Comment:

(Maximum characters: 1200). You have characters left.