Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 295869
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T06:29:48+00:00 2026-05-12T06:29:48+00:00

Is it possible to keep all my database related configuration (hostnames, usernames, passwords, and

  • 0

Is it possible to keep all my database related configuration (hostnames, usernames, passwords, and databases) as well as the function to connect to and select the correct database in a separate class?

I tried something like this:

class Database
{
    var $config = array(
        'username' => 'someuser',
        'password' => 'somepassword',
        'hostname' => 'some_remote_host',
        'database' => 'a_database'
    );
    function __construct() {
        $this->connect();
    }
    function connect() {
        $db = $this->config;
        $conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
        if(!$conn) {
            die("Cannot connect to database server"); 
        }
        if(!mysql_select_db($db['database'])) {
            die("Cannot select database");
        }
    }
}

And then in another class I would use in the classes __construct function:

require_once('database.php');
var $db_conn = new Database();

But this doesnt save the connection, it ends up defaulting to the servers local db connection. Or do I have to do the database commands everytime before I execute some database commands?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T06:29:48+00:00Added an answer on May 12, 2026 at 6:29 am

    I modified your class to work as you seem to be expecting it to:

    <?php
    class Database
    {
        var $conn = null;
        var $config = array(
            'username' => 'someuser',
            'password' => 'somepassword',
            'hostname' => 'some_remote_host',
            'database' => 'a_database'
        );
    
        function __construct() {
            $this->connect();
        }
    
        function connect() {
            if (is_null($this->conn)) {
                $db = $this->config;
                $this->conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
                if(!$this->conn) {
                    die("Cannot connect to database server"); 
                }
                if(!mysql_select_db($db['database'])) {
                    die("Cannot select database");
                }
            }
            return $this->conn;
        }
    }
    

    Usage:

    $db = new Database();
    $conn = $db->connect();
    

    Note that you can call connect() as many times as you like and it will use the current connection, or create one if it doesn’t exist. This is a good thing.

    Also, note that each time you instantiate a Database object (using new) you will be creating a new connection to the database. I suggest you look into implementing your Database class as a Singleton or storing it in a Registry for global access.

    You can also do it the dirty way and shove it in $GLOBALS.

    Edit

    I took the liberty of modifying your class to implement the Singleton pattern, and follow the PHP5 OOP conventions.

    <?php
    class Database
    {
        protected static $_instance = null;
    
        protected $_conn = null;
    
        protected $_config = array(
            'username' => 'someuser',
            'password' => 'somepassword',
            'hostname' => 'some_remote_host',
            'database' => 'a_database'
        );
    
        protected function __construct() {
        }
    
        public static function getInstance()
        {
            if (null === self::$_instance) {
                self::$_instance = new self();
            }
            return self::$_instance;
        }
    
        public function getConnection() {
            if (is_null($this->_conn)) {
                $db = $this->_config;
                $this->_conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
                if(!$this->_conn) {
                    die("Cannot connect to database server"); 
                }
                if(!mysql_select_db($db['database'])) {
                    die("Cannot select database");
                }
            }
            return $this->_conn;
        }
    
        public function query($query) {
            $conn = $this->getConnection();
            return mysql_query($query, $conn);
        }
    }
    

    Usage:

    $res = Database::getInstance()->query("SELECT * FROM foo;");
    

    or

    $db = Database::getInstance();
    $db->query("UPDATE foo");
    $db->query("DELETE FROM foo");
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is it possible to use something like this wrapper with fluent configuration? http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/ If
Generally i like to keep my database as clean and expandable as possible. However
I happen to have a database with a table that holds all possible combination
Is it possible to keep the JTextField uneditable, but keep the selection option using
With iOS 5 is it possible to keep the app running in the background
i'm trying to understand how and if its possible to keep a session open
I want to change color of the UINavigationBar? Is it possible to keep different
Is it possible to always keep selected item in the middle of a listbox?
I keep seeing documentation saying that its not possible to send to a remote
in order to keep as few SQL statements as possible, I want to do

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.