PHP code example of lakshanjs / pdodb
1. Go to this page and download the library: Download lakshanjs/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/ */
lakshanjs / pdodb example snippets
use LakshanJS\PdoDb\PdoDb;
$db = new PdoDb('host', 'username', 'password', 'databaseName');
$db = new PdoDb([
'host' => 'host',
'username' => 'username',
'password' => 'password',
'db' => 'databaseName',
'port' => 3306,
'prefix' => 'my_',
'charset' => 'utf8mb4',
]);
// Pass driver as the last parameter
$db = new PdoDb('host', 'username', 'password', 'databaseName', 3306, 'utf8mb4', 'pgsql');
// Or define it in the configuration array
$db = new PdoDb([
'host' => 'host',
'username' => 'username',
'password' => 'password',
'db' => 'databaseName',
'driver' => 'sqlsrv',
]);
$pdo = new PDO('mysql:host=host;dbname=databaseName', 'username', 'password');
$db = new PdoDb($pdo);
$db->setPrefix('my_');
$db->autoReconnect = false;
function init()
{
// db stays private here
$db = new PdoDb('host', 'user', 'pass', 'db');
}
function myFunc()
{
// obtain the instance created in init()
$db = PdoDb::getInstance();
}
$db->addConnection('slave', [
'host' => 'host',
'username' => 'username',
'password' => 'password',
'db' => 'databaseName',
'port' => 3306,
'prefix' => 'my_',
'charset' => 'utf8mb4',
]);
$users = $db->connection('slave')->get('users');
use LakshanJS\PdoDb\PdoDb;
$db = new PdoDb([
'host' => 'localhost',
'db' => 'pdodb_test',
'username' => 'root',
'password' => 'secret',
'charset' => 'utf8mb4',
]);
// fetch active users
$activeUsers = $db->where('status', 'active')->get('users');
// join with profiles table
$usersWithProfiles = $db
->join('profiles p', 'u.id = p.user_id', 'INNER')
->get('users u', null, ['u.email', 'p.full_name']);
// insert a user and update counters
$userId = $db->insert('users', [
'email' => '[email protected] ',
'login' => 'testuser',
'created_at' => $db->now(),
]);
$db->where('id', $userId)->update('users', [
'views' => $db->inc(),
'last_login' => $db->now(),
]);
// simple transaction
$db->startTransaction();
try {
$db->insert('log', ['msg' => 'demo', 'created_at' => $db->now()]);
$db->commit();
} catch (Exception $e) {
$db->rollback();
}
$db->jsonBuilder()->get('users');
$db->arrayBuilder()->get('users');
$db->objectBuilder()->get('users');
$users = $db->get('users');
$user = $db->getOne('users');
$count = $db->getValue('users', 'count(*)');
$exists = $db->where('id', 1)->has('users');
$top = $db->withTotalCount()->get('users', [0, 10]);
echo $db->totalCount; // total rows matching the query
$id = $db->insert('users', ['login' => 'admin']);
$ids = $db->insertMulti('users', [
['login' => 'a'],
['login' => 'b']
]);
$db->onDuplicate(['lastLogin' => $db->now()]);
$db->insert('users', ['id' => 1, 'login' => 'admin']);
$db->replace('users', ['id' => 1, 'login' => 'admin']);
$db->where('id', 1)->update('users', [
'views' => $db->inc(),
'expires' => $db->now('+1 day')
]);
$db->where('id', 1)->delete('users');
$rows = $db->rawQuery('SELECT * FROM users WHERE id = ?', [1]);
$row = $db->rawQueryOne('SELECT * FROM users WHERE id = ?', [1]);
$value = $db->rawQueryValue('SELECT count(*) FROM users');
$db->setQueryOption('SQL_NO_CACHE')->query('SELECT * FROM users');
$db->where('age', 18, '>')->orWhere('status', 'guest');
$db->whereRaw('JSON_CONTAINS(tags, ?)', ['"php"']);
$db->having('cnt', 5, '>')->orHaving('cnt', 10, '<');
$db->havingRaw('SUM(score) > ?', [100]);
$db->join('profiles p', 'u.id = p.user_id', 'LEFT');
$db->joinWhere('profiles p', 'p.active', 1);
$users = $db->get('users u');
$db->joinWithAlias('profiles', 'u.id = p.user_id', 'LEFT', 'p');
$db->orderBy('createdAt', 'DESC');
$db->groupBy('status');
$sub = PdoDb::subQuery('u');
$sub->where('active', 1)->get('users');
$posts = $db->join($sub, 'p.userId=u.id', 'LEFT')->get('posts p');
$page = 1;
$users = $db->paginate('users', $page);
$total = $db->totalPages;
$mapped = $db->map('id')->get('users');
$copy = $db->where('active', 1)->copy()->get('users');
$db->startTransaction();
if (!$db->insert('log', ['msg' => 'test'])) {
$db->rollback();
} else {
$db->commit();
}
$db->setLockMethod('WRITE')->lock('users');
// ... queries ...
$db->unlock();
$db->disconnect('slave');
$db->disconnectAll();
$db->ping();
$exists = $db->tableExists('users');
$escaped = $db->escape("' and 1=1");
$id = $db->getInsertId();
$error = $db->getLastError();
$query = $db->getLastQuery();
$db->clearStmtCache();
print_r($db->getCacheStats());
$db->setTrace(true);
print_r($db->getTrace());
$db->setSecurityLogCallback(function($type, $msg) {
error_log("[$type] $msg");
});
$db->setSecurityLogging(false); // disable
$status = $db->getSecurityStatus();
$db->update('users', [
'visits' => $db->inc(),
'quota' => $db->dec(5),
'note' => $db->not('note'),
'hash' => $db->func('SHA1(?)', ['secret'])
]);
$users = $db
->where('status', 'active')
->where('created_at', '2025-01-01', '>=')
->orderBy('createdAt', 'DESC')
->get('users', [20, 10], ['id', 'email']);
$rows = $db
->where('role', 'admin')
->orWhere('role', 'manager')
->get('users');
$rows = $db
->join('profiles p', 'u.id = p.user_id', 'LEFT')
->joinWhere('profiles p', 'p.active', 1)
->orderBy('u.id', 'ASC')
->get('users u', null, ['u.id', 'u.email', 'p.full_name']);
$rows = $db
->joinWithAlias('profiles', 'u.id = p.user_id', 'LEFT', 'p')
->joinWhere('profiles p', 'p.active', 1)
->get('users u');
$rows = $db
->groupBy('status')
->having('COUNT(*)', 5, '>')
->orderBy('cnt', 'DESC')
->get('users', null, ['status', 'COUNT(*) AS cnt']);
$db->onDuplicate([
'login' => $db->func('VALUES(login)'),
'lastLogin' => $db->func('VALUES(last_login)')
]);
$db->insert('users', [
'id' => 1,
'login' => 'admin',
'last_login'=> $db->now()
]);
$db->insertMulti('tags', [
['name' => 'php'],
['name' => 'pdo'],
['name' => 'security'],
]);
$db->where('id', 42)->update('users', [
'views' => $db->inc(),
'quota' => $db->dec(5),
'expires' => $db->now('+1 day'),
'note' => $db->not('note'),
]);
$db->where('user_id', 7)
->where('last_seen', '2025-01-01', '<')
->delete('sessions');
$sub = PdoDb::subQuery('u');
$sub->where('active', 1)->get('users', null, ['id', 'email']);
$rows = $db
->join($sub, 'p.user_id = u.id', 'LEFT')
->get('posts p', null, ['p.id', 'p.title', 'u.email']);
$page = 3;
$users = $db->orderBy('id', 'ASC')->paginate('users', $page, 10);
$total = $db->totalPages; // provided by withTotalCount logic inside paginate
$row = $db->rawQueryOne('SELECT * FROM users WHERE id = ?', [1]);
$db->startTransaction();
if (!$db->insert('log', ['msg' => 'test'])) {
$db->rollback();
} else {
$db->commit();
}
$json = $db->jsonBuilder()->get('users');
$array = $db->arrayBuilder()->get('users');
$obj = $db->objectBuilder()->get('users');
$top = $db->withTotalCount()->get('users', [0, 10]);
$total = $db->totalCount;
$db->connect();
$db->disconnect('slave');
$db->disconnectAll();
$db->connection('slave')->get('users');
$db->addConnection('slave', [...]);
$pdo = $db->pdo();
$db->jsonBuilder()->get('users');
$db->arrayBuilder()->get('users');
$db->objectBuilder()->get('users');
$db->setPrefix('my_');
$db->rawQuery('SELECT 1');
$db->rawQueryOne('SELECT * FROM users WHERE id = ?', [1]);
$db->rawQueryValue('SELECT COUNT(*) FROM users');
$db->query('SELECT * FROM users WHERE id = :id', [':id' => 1]);
$db->setQueryOption('SQL_NO_CACHE');
$db->withTotalCount()->get('users');
$users = $db->get('users');
$user = $db->getOne('users');
$count = $db->getValue('users', 'COUNT(*)');
$exists = $db->where('id',1)->has('users');
$id = $db->insert('users', ['login' => 'admin']);
$db->insertMulti('users', [['login' => 'a'], ['login' => 'b']]);
$db->replace('users', ['id' => 1, 'login' => 'admin']);
$db->onDuplicate(['login' => 'new']);
$db->where('id',1)->update('users',['login'=>'u']);
$db->where('id',1)->delete('users');
$db->where('id',1);
$db->orWhere('status','active');
$db->whereRaw('id > ?', [10]);
$db->having('COUNT(id)', 1);
$db->orHaving('SUM(score)', '>', 10);
$db->havingRaw('SUM(score) > ?', [10]);
$db->join('profiles p', 'u.id = p.user_id', 'LEFT');
$db->joinWithAlias('profiles', 'u.id = p.user_id', 'LEFT', 'p');
$db->joinWhere('profiles p', 'p.active', 1);
$db->joinOrWhere('profiles p', 'p.active', 0);
$db->orderBy('createdAt', 'DESC');
$db->groupBy('status');
$sub = PdoDb::subQuery('u');
$sql = $sub->getSubQuery();
$copy = $db->copy();
$mapped = $db->map('id')->get('users');
$users = $db->paginate('users', 1);
$db->startTransaction();
$db->commit();
$db->rollback();
$db->setLockMethod('WRITE');
$db->lock('users');
$db->unlock();
$escaped = $db->escape("' and 1=1");
$id = $db->getInsertId();
$error = $db->getLastError();
$errno = $db->getLastErrno();
$query = $db->getLastQuery();
$db->setTrace(true);
$trace = $db->getTrace();
$last = $db->getLastTrace();
$db->clearTrace();
$db->update('users',['visits'=>$db->inc()]);
$db->update('users',['quota'=>$db->dec(5)]);
sql
INSERT INTO tags (name) VALUES ('php'), ('pdo'), ('security');
sql
DELETE FROM sessions
WHERE user_id = 7 AND last_seen < '2025-01-01';
php
$db->update('users',['active'=>$db->not('active')]);
php
$db->update('users',['hash'=>$db->func('SHA1(?)',['secret'])]);
php
$db->insert('log',['created'=>$db->now()]);
php
$db->where('created_at', $db->interval('-1', 'DAY'), '>');
php
$db->ping();
php
$db->clearStmtCache();
php
$stats = $db->getCacheStats();
php
$exists = $db->tableExists('users');
php
$valid = $db->isValidIdentifier('users');
php
$db->setSecurityLogCallback(fn($t,$m)=>error_log("[$t] $m"));
php
$db->setSecurityLogging(false);
php
$status = $db->getSecurityStatus();
php
$version = $db->getVersion();
php
$mysql = $db->getMysqlVersion();
php
$db = PdoDb::getInstance();