Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

PHP class to make interacting with a database ridiculusly easy

License

NotificationsYou must be signed in to change notification settings

ezSQL/ezsql

Repository files navigation

WindowsLinuxmacOScodecovCodacy BadgeMaintainabilityTotal Downloads

A class to make it very easy to deal with database connections.An universal interchangeableCRUD system.

This isVersion 5 which will break users ofversion 4.

Mainly by:

  • The use ofnamespace in theglobal functionsezFunctions.php file.Usage of theglobal functions will require the user to begin a.php file something like:

    usefunctionezsql\functions\where;// Orusefunctionezsql\functions\{getInstance,selecting,inserting,};
  • Class properties that was accessible by magic methodsget/set, now PSR 1 camelCase.

  • Renamedselect ofez_mysqli todbSelect.

  • Renamed class method and behavior ofselecting toselect.

  • selecting, and newinserting methods, can be called without table name, only the other necessary parameters:

    • The tablename withprefix, can be preset/stored with methodstableSetup(name, prefix), or setTable(name), setPrefix(append), if called without presetting,false is returned.
    • Thisfeature will be added toall databaseCRUD access methods , each method name will have aning ending added.
  • Removed global functions wheretable name 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 requiredPHP 5.6. Which drop mysql extension support, other than that, nothing as far using the library was changed, only additional features.

This library has anDatabase class, an combination of theFactory pattern with anDependency 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 seedocumentation 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.useezsql\Database;$db = Database::initialize('****', [$dsn_path_user,$password,$database,$other_settings],$optional_tag);// Is same as:useezsql\Config;useezsql\Database\ez_****;$settings =newConfig('****', [$dsn_path_user,$password,$database,$other_settings]);$db =newez_****($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 seephpunit 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 tablecreate('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),// mysqlicolumn('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 expressionseq('column',$value,_AND),// combine next expressionneq('column',$value,_OR),// will combine next expression againne('column',$value),// the default is _AND so will combine next expressionlt('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) clausegrouping(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]);// returns result set given the table name, column fields, and ...conditions$result =$db->select('profile','phone',eq('email',$email),between('id',1,$values));foreach ($resultas$row) {echo$row->phone;}$result =$db->select('profile','name, email',// Conditionals can also be called, stacked with other functions like://  innerJoin(), leftJoin(), rightJoin(), fullJoin()//      as (leftTable, rightTable, leftColumn, rightColumn, tableAs, equal condition),//  where( eq( columns, values, _AND ), like( columns, _d ) ),//  groupBy( columns ),//  having( between( columns, values1, values2 ) ),//  orderBy( columns, desc ),//  limit( numberOfRecords, offset ),//  union(table, columnFields, conditions),//  unionAll(table, columnFields, conditions)$db->where(eq('phone',$number,_OR),neq('id',5) ),//  another way: where( array(key, operator, value, combine, combineShifted) );//  or as strings double spaced: where( "key  operator  value  combine  combineShifted" );$db->orderBy('name'),$db->limit(1));foreach ($resultas$row) {echo$row->name.''.$row->email;}// To get results in `JSON` format$json =get_results(JSON,$db);

Example for using prepare statements directly, no shortcut SQL methods used

$db->query_prepared('INSERT INTO profile( name, email, phone) VALUES( ?, ?, ? );', [$user,$address,$number]);$db->query_prepared('SELECT name, email FROM profile WHERE phone = ? OR id != ?', [$number,5]);$result =$db->queryResult();// the last query that has results are stored in `lastResult` protected property// Or for results in other formats use the global function, will use global database instance if no `$db` supplied$result =get_results(/* OBJECT|ARRAY_A|ARRAY_N|JSON */,$db);// Defaults to `OBJECT`foreach ($resultas$row) {echo$row->name.''.$row->email;}

Most of shortcut methods have counterglobalfunctions available.They can only be access by beginning your.php file like:

usefunctionezsql\functions\functionBelow;// Or as here, a complete list.usefunctionezsql\functions\{database,mysqlInstance,pgsqlInstance,mssqlInstance,sqliteInstance,pdoInstance,tagInstance,setInstance,getInstance,clearInstance,get_vendor,///to_string,clean_string,is_traversal,sanitize_path,create_certificate,///column,primary,foreign,unique,index,addColumn,dropColumn,changingColumn,///eq,neq,ne,lt,lte,gt,gte,isNull,isNotNull,like,in,notLike,notIn,between,notBetween,///where,grouping,groupBy,having,orderBy,limit,innerJoin,leftJoin,rightJoin,fullJoin,union,unionAll,///creating,deleting,dropping,replacing,selecting,inserting,altering,get_results,table_setup,set_table,set_prefix,select_into,insert_select,create_select,};

For the functionsusage/docs seeezFunctions.php.

For Authors andContributors

Contributing

Contributions are encouraged and welcome; I am always happy to get feedback or pull requests on Github :) CreateGithub Issues for bugs and new features and comment on the ones you are interested in.

License

ezsql is open-sourced software licensed originally under (LGPL-3.0), and the addon parts under (MIT).


[8]ページ先頭

©2009-2025 Movatter.jp