Skip to content

Instantly share code, notes, and snippets.

@romeosierra1
Created July 21, 2018 19:36
Show Gist options
  • Save romeosierra1/6311c138a22a64f29782f0fbb54678f6 to your computer and use it in GitHub Desktop.
Save romeosierra1/6311c138a22a64f29782f0fbb54678f6 to your computer and use it in GitHub Desktop.
PHP Script for CRUD Operations using PDO
<?php
$servername = "your-maria-db-server";
$username = "your-db-username";
$password = "your-db-password";
$dbname = "your-dbanme";
$db = new PDO('mysql:host=' . $servername . ';dbname=' . $dbname, $username, $password);
function selectAnd($entityName, $where = null, $orderBy = null)
{
global $db;
$query = 'SELECT * FROM ' . $entityName;
if ($where != null) {
if (count($where) > 0) {
$query .= ' WHERE' . generateWhere('AND', $where);
}
}
if ($orderBy != null) {
if (count($orderBy) > 0) {
$query .= ' ORDER BY' . generateOrderBy($orderBy);
}
}
$statement = $db->prepare($query);
if ($where != null) {
$statement = bindQuery($statement, $where);
}
$statement->execute();
$result = $statement->fetchAll();
$statement->closeCursor();
return $result;
}
function selectOr($entityName, $where = null, $orderBy = null)
{
global $db;
$query = 'SELECT * FROM ' . $entityName;
if ($where != null) {
if (count($where) > 0) {
$query .= ' WHERE' . generateWhere('OR', $where);
}
}
if ($orderBy != null) {
if (count($orderBy) > 0) {
$query .= ' ORDER BY' . generateOrderBy($orderBy);
}
$query = substr($query, 0, intval(strlen($query) - 1));
}
$statement = $db->prepare($query);
if ($where != null) {
$statement = bindQuery($statement, $where);
}
$statement->execute();
$result = $statement->fetchAll();
$statement->closeCursor();
return $result;
}
function insert($entityName, $data)
{
global $db;
$query = 'INSERT INTO ' . $entityName . ' ' . generateColumnsParameters('', $data) . ' VALUES ' . generateColumnsParameters(':', $data);
$statement = $db->prepare($query);
$statement = bindQuery($statement, $data);
$statement->execute();
$statement->closeCursor();
}
function update($entityName, $data, $where)
{
global $db;
$query = 'UPDATE ' . $entityName . ' SET ' . generateUpdateParameters($data) . ' WHERE ' . generateWhere('AND', $where);
$statement = $db->prepare($query);
$statement = bindQuery($statement, $data);
$statement = bindQuery($statement, $where);
$statement->execute();
$statement->closeCursor();
}
function delete($entityName, $where)
{
global $db;
$query = 'DELETE FROM ' . $entityName . ' WHERE ' . generateWhere('AND', $where);
$statement = $db->prepare($query);
$statement = bindQuery($statement, $where);
$statement->execute();
$statement->closeCursor();
}
function generateWhere($operator, $where)
{
$query = '';
foreach ($where as $key => $value) {
$query .= ' ' . $key . ' = :' . $key . ' ' . $operator;
}
$query = substr($query, 0, intval(strlen($query) - intval(strlen($operator) + 1)));
return $query;
}
function generateOrderBy($orderBy)
{
$query = '';
foreach ($orderBy as $value) {
$query .= ' ' . $value . ',';
}
$query = substr($query, 0, intval(strlen($query) - 1));
return $query;
}
function generateUpdateParameters($data)
{
$query = '';
foreach ($data as $key => $value) {
$query .= $key . ' = :' . $key . ', ';
}
$query = substr($query, 0, intval(strlen($query) - 2));
return $query;
}
function generateColumnsParameters($isParam, $data)
{
$query = '(';
foreach ($data as $key => $value) {
$query .= $isParam . $key . ',';
}
$query = substr($query, 0, intval(strlen($query) - 1));
$query .= ')';
return $query;
}
function bindQuery($statement, $data)
{
foreach ($data as $key => $value) {
$statement->bindValue(':' . $key, $value);
}
return $statement;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment