Skip to content

Instantly share code, notes, and snippets.

@ftonato
Last active March 3, 2024 04:30
Show Gist options
  • Save ftonato/2973a55baf8eef6795a48804dcdb71dd to your computer and use it in GitHub Desktop.
Save ftonato/2973a55baf8eef6795a48804dcdb71dd to your computer and use it in GitHub Desktop.
PDO Connection Class using Singleton
<?php
/**
* PDO Singleton Class v.1.0
*
* @author Ademílson F. Tonato
* @link https://twitter.com/ftonato
*
*/
class DB {
protected static $instance;
protected function __construct() {}
public static function getInstance() {
if(empty(self::$instance)) {
$db_info = array(
"db_host" => "localhost",
"db_port" => "3306",
"db_user" => "user",
"db_pass" => "pass",
"db_name" => "ftonato",
"db_charset" => "UTF-8");
try {
self::$instance = new PDO("mysql:host=".$db_info['db_host'].';port='.$db_info['db_port'].';dbname='.$db_info['db_name'], $db_info['db_user'], $db_info['db_pass']);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
self::$instance->query('SET NAMES utf8');
self::$instance->query('SET CHARACTER SET utf8');
} catch(PDOException $error) {
echo $error->getMessage();
}
}
return self::$instance;
}
public static function setCharsetEncoding() {
if (self::$instance == null) {
self::connect();
}
self::$instance->exec(
"SET NAMES 'utf8';
SET character_set_connection=utf8;
SET character_set_client=utf8;
SET character_set_results=utf8");
}
}
?>
<?php
require_once ('database.class.php');
try {
$db = DB::getInstance();
DB::setCharsetEncoding();
$sqlExample = 'SELECT * FROM users WHERE _id = 1';
$stm = $db->prepare($sqlExample);
$stm->execute();
return $stm->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
print $e->getMessage();
}
@bandaranaike
Copy link

In line 44 the self::connect(); method cannot be found. Please take a look. Thank you for sharing this code. It's helpful.

@ribafs
Copy link

ribafs commented Sep 19, 2022

Thank you. Works fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment