1. Go to this page and download the library: Download decmuc/pdodb library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
decmuc / pdodb example snippets
use decMuc\PDOdb\PDOdb;
$db->get($_POST['table'])
$db->update($_POST['table'], $data)
$db->query("SELECT * FROM " . $_GET['table'])
// with manual installation
or with composer autoload
$db = new PDOdb('localhost', 'root', 'secret', 'my_database');
// create a default instance
$db = new PDOdb([
'host' => 'localhost',
'username' => 'root',
'password' => 'secret',
'db' => 'my_database',
'port' => 3306,
'charset' => 'utf8mb4'
]);
// creates a named instance
$db2 = new PDOdb([
'host' => 'localhost',
'username' => 'root',
'password' => 'secret',
'db' => 'my_database',
'port' => 3306,
'charset' => 'utf8mb4',
'instance' => 'customer'
]);
// Retrieve active or named instance:
$db = PDOdb::getInstance(); // returns last active default
$db2 = PDOdb::getInstance('customer'); // explicitly retrieve 'customer'
$pdo = new PDO(
'mysql:host=localhost;dbname=my_database;charset=utf8mb4',
'root',
'secret',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$db = new PDOdb($pdo);
function init() {
// Create and register global instance
$db = new \decMuc\PDOdb\PDOdb([
'host' => 'localhost',
'username' => 'root',
'password' => 'secret',
'db' => 'my_database',
'port' => 3306,
'charset' => 'utf8mb4'
]);
}
function myFunction() {
// Retrieve globally shared instance
$db = \decMuc\PDOdb\PDOdb::getInstance();
...
}
$page = 1;
// Set number of results per page (default is 20)
$db->pageLimit = 2;
// Fetch paginated results using arrayBuilder()
$products = $db->arrayBuilder()->paginate("products", $page);
echo "Showing page $page out of " . $db->totalPages;
$users = $db->rawQuery('SELECT * FROM users WHERE id >= ?', [10]);
foreach ($users as $user) {
print_r($user);
}
$user = $db->rawQueryOne('SELECT * FROM users WHERE id = ?', [10]);
echo $user['login'];
$password = $db->rawQueryValue('SELECT password FROM users WHERE id = ? LIMIT 1', [10]);
echo "Password is {$password}";
$logins = $db->rawQueryValue('SELECT login FROM users LIMIT 10');
foreach ($logins as $login) {
echo $login;
}
$id = $_GET['id'];
// ❌ Dangerous: exposes your database to SQL injection!
$users = $db->rawQuery("SELECT * FROM users WHERE id = $id");
// ✅ Instead, use:
$users = $db->rawQuery("SELECT * FROM users WHERE id = ?", [$id]);
$params = [10, 1, 10, 11, 2, 10];
$q = "(
SELECT a FROM t1 WHERE a = ? AND B = ? ORDER BY a LIMIT ?
) UNION (
SELECT a FROM t2 WHERE a = ? AND B = ? ORDER BY a LIMIT ?
)";
$results = $db->rawQuery($q, $params);
print_r($results);
$db->setQueryOption('LOW_PRIORITY')->insert($table, $param);
// Produces: INSERT LOW_PRIORITY INTO table ...
$db->setQueryOption('FOR UPDATE')->get('users');
// Produces: SELECT * FROM users FOR UPDATE;
// Find user with id = 42
$db->whereInt('id', 42);
$user = $db->getOne('users');
// Find users with id = 42 or id = 99
$db->whereInt('id', 42)
->orWhereInt('id', 99);
$users = $db->get('users');
// Users without a phone number
$db->whereIsNull('phone');
$users = $db->get('users');
// OR-condition with NULL check
$db->where('email', '[email protected]')
->orWhereIsNull('email');
$users = $db->get('users');
// Users with a password set
$db->whereIsNotNull('password');
$users = $db->get('users');
// OR-condition combined
$db->where('active', 1)
->orWhereIsNotNull('last_login');
$users = $db->get('users');
$unsafe = "'; DROP TABLE users; --";
$safe = $db->escape($unsafe);
// -> returns: \'; DROP TABLE users; --
$db->where('name', $name); // safely bound and escaped internally
$name = $db->escape($_GET['name']);
$sql = "SELECT * FROM users WHERE name = '$name'";
$db->rawQuery($sql); // 🚨 vulnerable to mistakes
$db->orderBy("id", "asc");
$db->orderBy("login", "desc");
$db->orderBy("RAND()");
$results = $db->get('users');
// SELECT * FROM users ORDER BY id ASC, login DESC, RAND()
$db->orderBy('userGroup', 'ASC', ['superuser', 'admin', 'users']);
$db->get('users');
// SELECT * FROM users ORDER BY FIELD(userGroup, 'superuser', 'admin', 'users') ASC
$db->setPrefix("t_");
$db->orderBy("users.id", "asc");
$results = $db->get('users');
// WRONG: SELECT * FROM t_users ORDER BY users.id ASC
$db->orderBy("`users`.id", "asc");
$results = $db->get('users');
// CORRECT: SELECT * FROM t_users ORDER BY t_users.id ASC
$db->groupBy ("name");
$results = $db->get ('users');
// Gives: SELECT * FROM users GROUP BY name;
$db->where("agentId", 10);
$db->where("active", true);
$customers = $db->copy();
$res = $customers->get("customers", [10, 10]);
// SELECT * FROM customers WHERE agentId = 10 AND active = 1 LIMIT 10, 10
$cnt = $db->getValue("customers", "count(id)");
echo "total records found: " . $cnt;
// SELECT count(id) FROM customers WHERE agentId = 10 AND active = 1
$sq = $db->subQuery();
$sq->get("users");
// (SELECT * FROM users)
$sq = $db->subQuery("sq");
$sq->get("users");
// (SELECT * FROM users) sq
$ids = $db->subQuery();
$ids->where("qty", 2, ">");
$ids->get("products", null, "userId");
$db->where("id", $ids, "IN");
$res = $db->get("users");
// SELECT * FROM users WHERE id IN (SELECT userId FROM products WHERE qty > 2)
$userIdQ = $db->subQuery();
$userIdQ->where("id", 6);
$userIdQ->getOne("users", "name");
$data = [
"productName" => "test product",
"userId" => $userIdQ,
"lastUpdated" => $db->now()
];
$id = $db->insert("products", $data);
// INSERT INTO products (productName, userId, lastUpdated)
// VALUES ("test product", (SELECT name FROM users WHERE id = 6), NOW());
$ids = $db->subQuery ();
$ids->where ("qty", 2, ">");
$ids->get ("products", null, "userId");
$db->where ("id", $ids, 'in');
$res = $db->get ("users");
// Gives SELECT * FROM users WHERE id IN (SELECT userId FROM products WHERE qty > 2)
$usersQ = $db->subQuery("u");
$usersQ->where("active", 1);
$usersQ->get("users");
$db->join($usersQ, "p.userId=u.id", "LEFT");
$products = $db->get("products p", null, "u.login, p.productName");
print_r($products);
// SELECT u.login, p.productName FROM products p
// LEFT JOIN (SELECT * FROM t_users WHERE active = 1) u ON p.userId = u.id;
$db->join("users u", "p.tenantID = u.tenantID", "LEFT");
$db->where("u.id", 6);
$products = $db->get("products p", null, "u.name, p.productName");
print_r($products);
// SELECT u.name, p.productName FROM products p
// LEFT JOIN users u ON p.tenantID = u.tenantID
// WHERE u.id = 6
$db->join("users u", "p.tenantID = u.tenantID", "LEFT");
$db->joinWhere("users u", "u.tenantID", 5);
$products = $db->get("products p", null, "u.name, p.productName");
print_r($products);
// SELECT u.name, p.productName FROM products p
// LEFT JOIN users u ON (p.tenantID = u.tenantID AND u.tenantID = 5)
$db->join("users u", "p.tenantID = u.tenantID", "LEFT");
$db->joinOrWhere("users u", "u.tenantID", 5);
$products = $db->get("products p", null, "u.name, p.productName");
print_r($products);
// SELECT u.name, p.productName FROM products p
// LEFT JOIN users u ON (p.tenantID = u.tenantID OR u.tenantID = 5)
$db->join("users u", "p.tenantID = u.tenantID", "LEFT");
$db->where("u.tenantID", 5); // ⛔ NOT in JOIN ON, but in WHERE clause
$sub = $db->subQuery();
$sub->where("status", "active");
$sub->get("sessions s", null, "s.userId");
$db->where(null, $sub, 'EXISTS');
$db->get("users");
// SELECT * FROM users WHERE EXISTS (SELECT s.userId FROM sessions s WHERE status = 'active')
$sub = $db->subQuery();
$sub->where("status", "active");
$sub->get("sessions s", null, "s.userId");
$db->where(null, $sub, 'EXISTS');
$db->get("users");
// SELECT * FROM users WHERE EXISTS (SELECT s.userId FROM sessions s WHERE status = 'active')
$sub = $db->subQuery();
$sub->get("orders", null, "customerId");
$db->where("id", $sub, "IN");
$customers = $db->get("customers");
// SELECT * FROM customers WHERE id IN (SELECT customerId FROM orders)
$sub = $db->subQuery();
$sub->get("orders", null, "customerId");
$db->where("id", $sub, "NOT IN");
$customers = $db->get("customers");
// SELECT * FROM customers WHERE id NOT IN (SELECT customerId FROM orders)