Skip to content

Instantly share code, notes, and snippets.

@ftonato
Last active November 29, 2024 15:08
Show Gist options
  • Select an option

  • Save ftonato/2973a55baf8eef6795a48804dcdb71dd to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown

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
Copy Markdown

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