Ezsql
PHP class to make interacting with a database ridiculusly easy
Install / Use
/learn @ezSQL/EzsqlREADME
ezsql
A class to make it very easy to deal with database connections. An universal interchangeable CRUD system.
This is Version 5 which will break users of version 4.
Mainly by:
-
The use of
namespacein theglobalfunctions ezFunctions.php file. Usage of the global functions will require the user to begin a.phpfile something like:use function ezsql\functions\where; // Or use function ezsql\functions\{ getInstance, selecting, inserting, }; -
Class properties that was accessible by magic methods
get/set, now PSR 1 camelCase. -
Renamed
selectofez_mysqlitodbSelect. -
Renamed class method and behavior of
selectingtoselect. -
selecting, and newinsertingmethods, can be called without table name, only the other necessary parameters:- The table name with prefix, can be preset/stored with methods
tableSetup(name, prefix), or setTable(name), setPrefix(append), if called without presetting,falseis returned. - This feature will be added to all database CRUD access methods , each method name will have an
ingending added.
- The table name with prefix, can be preset/stored with methods
-
Removed global functions where
tablename passed in, use functions using preset table names ending withing. -
renamed cleanInput to clean_string
-
renamed createCertificate to create_certificate
-
added global get_results to return result sets in different formats
Version 4 has many modern programming practices in which will break users of version 3.
Version 3 broke version 2.1.7 in one major way, it required PHP 5.6. Which drop mysql extension support, other than that, nothing as far using the library was changed, only additional features.
This library has an Database class, an combination of the Factory pattern with an Dependency Injection container hosting. This library now is following many OOP principles, one in which, the methods properties public access has been removed. This library also following PSR-2, PSR-4, PSR-11 conventions, and mostly PSR-1, that's still an work in progress.
- More Todo...
For an full overview see documentation Wiki, which is not completely finish.
Installation
composer require ezsql/ezsql
Usage
require 'vendor/autoload.php';
// **** is one of mysqli, pgsql, sqlsrv, sqlite3, or Pdo.
use ezsql\Database;
$db = Database::initialize('****', [$dsn_path_user, $password, $database, $other_settings], $optional_tag);
// Is same as:
use ezsql\Config;
use ezsql\Database\ez_****;
$settings = new Config('****', [$dsn_path_user, $password, $database, $other_settings]);
$db = new ez_****($settings);
This library will assume the developer is using some sort of IDE with intellisense enabled. The comments/doc-block area will hold any missing documentations. For additional examples see phpunit tests, The tests are fully functional integration tests, meaning the are live database tests, no mocks.
The following has been added since version 2.1.7.
General Methods
to_string($arrays, $separation = ',');
clean($string);
create_cache(string $path = null);
secureSetup(string $key = 'certificate.key',
string $cert = 'certificate.crt',
string $ca = 'cacert.pem',
string $path = '.'._DS
);
secureReset();
create_certificate(string $privatekeyFile = certificate.key,
string $certificateFile = certificate.crt,
string $signingFile = certificate.csr,
string $ssl_path = null, array $details = [commonName => localhost]
);
Shortcut Table Methods
create(string $table = null, ...$schemas);// $schemas requires... column()
column(string $column = null, string $type = null, ...$args);
primary(string $primaryName, ...$primaryKeys);
index(string $indexName, ...$indexKeys);
drop(string $table);
Example
// Creates an database table
create('profile',
// and with database column name, datatype
// data types are global CONSTANTS
// SEQUENCE|AUTO is placeholder tag, to be replaced with the proper SQL drivers auto number sequencer word.
column('id', INTR, 11, AUTO, PRIMARY), // mysqli
column('name', VARCHAR, 50, notNULL),
column('email', CHAR, 25, NULLS),
column('phone', TINYINT)
);
innerJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
leftJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
rightJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
fullJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
prepareOn(); // When activated will use prepare statements for all shortcut SQL Methods calls.
prepareOff(); // When off shortcut SQL Methods calls will use vendors escape routine instead. This is the default behavior.
Shortcut SQL Methods
having(...$having);groupBy($groupBy);union(string $table = null, $columnFields = '*', ...$conditions);unionAll(string $table = null, $columnFields = '*', ...$conditions);orderBy($orderBy, $order);limit($numberOf, $offset = null)where( ...$whereConditions);select(string $table = null, $columnFields = '*', ...$conditions);create_select(string $newTable, $fromColumns, $oldTable = null, ...$conditions);select_into(string $newTable, $fromColumns, $oldTable = null, ...$conditions);update(string $table = null, $keyAndValue, ...$whereConditions);delete(string $table = null, ...$whereConditions);replace(string $table = null, $keyAndValue);insert(string $table = null, $keyAndValue);create(string $table = null, ...$schemas);drop(string $table = null);alter(string $table = null, ...$alteringSchema);insert_select(string $toTable = null, $toColumns = '*', $fromTable = null, $fromColumns = '*', ...$conditions);
// The variadic ...$whereConditions, and ...$conditions parameters,
// represent the following global functions.
// They are comparison expressions returning an array with the given arguments,
// the last arguments of _AND, _OR, _NOT, _andNOT will combine expressions
eq('column', $value, _AND), // combine next expression
neq('column', $value, _OR), // will combine next expression again
ne('column', $value), // the default is _AND so will combine next expression
lt('column', $value)
lte('column', $value)
gt('column', $value)
gte('column', $value)
isNull('column')
isNotNull('column')
like('column', '_%?')
notLike('column', '_%?')
in('column', ...$value)
notIn('column', ...$value)
between('column', $value, $value2)
notBetween('column', $value, $value2)
// The above should be used within the where( ...$whereConditions) clause
// $value will protected by either using escape or prepare statement
// To allow simple grouping of basic $whereConditions,
// wrap the following around a group of the above comparison
// expressions within the where( ...$whereConditions) clause
grouping( eq(key, value, combiner ), eq(key, value, combiner ) )
// The above will wrap beginning and end grouping in a where statement
// where required to break down your where clause.
// Note: The usage of this method will require the user/developer to check
// if `query_string` or `param_array` is valid.
//
// This is really an `private` internal method for other shortcut methods,
// it's made public for `class development` usage only.
//
//
// Supply the the whole `query` string, and placing '?' within, with the same number of arguments in an array.
// It will then determine arguments type, execute, and return results.
query_prepared(string $query_string, array $param_array);
// You will need to call this method to get last successful query result.
// It wll return an object array.
queryResult();
Example for using prepare statements indirectly, with above shortcut SQL methods
// To get all shortcut SQL methods calls to use prepare statements
$db->prepareOn(); // This needs to be called at least once at instance creation
$values = [];
$values['name'] = $user;
$values['email'] = $address;
$values['phone'] = $number;
$db->insert('profile', $values);
$db->insert('profile', ['name' => 'john john', 'email' => 'john@email', 'phone' => 123456]);
// r
Related Skills
oracle
335.4kBest practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
prose
335.4kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
Command Development
82.5kThis skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
Plugin Structure
82.5kThis skill should be used when the user asks to "create a plugin", "scaffold a plugin", "understand plugin structure", "organize plugin components", "set up plugin.json", "use ${CLAUDE_PLUGIN_ROOT}", "add commands/agents/skills/hooks", "configure auto-discovery", or needs guidance on plugin directory layout, manifest configuration, component organization, file naming conventions, or Claude Code plugin architecture best practices.
