PHP OOP MySQL connection

In previous projects, I have used the following code to connect to a MySQL database:

File: connect.php

define('DB_SERVER','my_server');
define('DB_DATABASE','my_database');
define('DB_SERVER_USERNAME','my_user');
define('DB_SERVER_PASSWORD','my_password');

$db_server = DB_SERVER;
$db_username = DB_SERVER_USERNAME;
$db_password = DB_SERVER_PASSWORD;
$db_database = DB_DATABASE;

$connection = mysqli_connect($db_server, $db_username, $db_password,$db_database);

if ($connection) {
  //Connected OK
} else {
  die ("Cannot connect to database $db_database in $db_server!");
}

      

And all my other scripts look like this:

include "connect.php"
//From here, I can use the $connection variable to select/insert/delete/update data in my_database.

      

Now I am trying to use more OOP approaches in my programming and then I generate the following code to connect to MySQL:

Class Connection extends mysqli{
  public function __construct(){
    if ($config = parse_ini_file('config/config.ini',true)){
      $server = $config['database']['server'];
      $username = $config['database']['username'];
      $password = $config['database']['password'];
      $database = $config['database']['dbname'];
      parent::__construct($server,$username,$password,$database);
      if (mysqli_connect_error()){
        $message = "Conection error (" . mysqli_connect_errno() . ") " .
                    mysqli_connect_error();
        throw new Exception($message);
      }
    } else {
      $message = "Config file not found.";
      throw new Exception($message);
    }
  }
}

      

And my scripts now look like this:

set_include_path(__DIR__.'/Classes');
spl_autoload_extensions(".php");
spl_autoload_register();

try {
  $connection = new Connection();
} catch (Exception $ex){
  die($ex->getMessage());
}

//Again, from here I can use the variable $connection to use my database

      

Both solutions work, but ...

Questions:

  • Is this necessary or am I over complicating these scenarios?
  • Are there any best practices in this regard?

Thanks in advance for any comments to improve the whole thing.

+3


source to share


1 answer


config.php:

<?php
    //Enter your database connection details here.
    $host = 'localhost'; //HOST NAME.
    $db_name = 'databasename'; //Database Name
    $db_username = 'root'; //Database Username
    $db_password = ''; //Database Password

    try
    {
        $pdo = new PDO('mysql:host='. $host .';dbname='.$db_name, $db_username, $db_password);
    }
    catch (PDOException $e)
    {
        exit('Error Connecting To DataBase');
    }
?>

      

database.class.php:



<?php
    class database
    {
        function __construct($pdo)
        {
            $this->pdo = $pdo;
        }

        function getData()
        {
            $query = $this->pdo->prepare('SELECT * FROM database');
            $query->execute();
            return $query->fetchAll();
        }
    }
?>

      

index.php:

<?php
    require_once 'config.php';
    require_once 'database.class.php';
    $db = new database($pdo);
    $rows = $db->getData();
?>

      

0


source







All Articles