diff --git a/MysqliDb.php b/MysqliDb.php index fc188bd5..7c8e57e5 100644 --- a/MysqliDb.php +++ b/MysqliDb.php @@ -619,7 +619,9 @@ protected function _buildQuery($numRows = null, $tableData = null) //Prepair the where portion of the query $this->_query .= ' WHERE '; $i = 0; - foreach ($this->_where as list($concat, $wValue, $wKey)) { + foreach ($this->_where as $cond) { + list ($concat, $wValue, $wKey) = $cond; + // if its not a first condition insert its concatenator (AND or OR) if ($i++ != 0) $this->_query .= " $concat "; diff --git a/readme.md b/readme.md index 64749db8..0d4a5256 100644 --- a/readme.md +++ b/readme.md @@ -1,18 +1,38 @@ -To utilize this class, first import Mysqldbi.php into your project, and require it. +MysqliDb -- Simple MySQLi wrapper with prepared statements +
+### Table of Contents +**[Initialization](#initialization)** +**[Insert Query](#insert-query)** +**[Update Query](#update-query)** +**[Select Query](#select-query)** +**[Delete Query](#delete-query)** +**[Generic Query](#generic-query-method)** +**[Raw Query](#raw-query-method)** +**[Where Conditions](#where-method)** +**[Order Conditions](#ordering-method)** +**[Group Conditions](#grouping-method)** +**[Properties Sharing](#properties-sharing)** +**[Joining Tables](#join-method)** +**[Subqueries](#subqueries)** +**[Helper Functions](#helper-commands)** +**[Transaction Helpers](#transaction-helpers)** + +### Initialization +To utilize this class, first import MysqliDb.php into your project, and require it. ```php -require_once('Mysqlidb.php'); +require_once ('MysqliDb.php'); ``` After that, create a new instance of the class. ```php -$db = new Mysqlidb('host', 'username', 'password', 'databaseName'); +$db = new MysqliDb ('host', 'username', 'password', 'databaseName'); ``` Its also possible to set a table prefix: ```php -$db->setPrefix('tablePrefix'); +$db->setPrefix ('my_'); ``` Next, prepare your data, and call the necessary methods. @@ -45,9 +65,9 @@ $data = Array( // Supported intervals [s]econd, [m]inute, [h]hour, [d]day, [M]onth, [Y]ear ); -$id = $db->insert('users', $data); -if($id) - echo 'user was created. Id='.$id; +$id = $db->insert ('users', $data); +if ($id) + echo 'user was created. Id=' . $id; ``` ### Update Query @@ -60,8 +80,8 @@ $data = Array ( 'active' => $db->not() // active = !active; ); -$db->where('id', 1); -if($db->update('users', $data)) echo 'successfully updated'; +$db->where ('id', 1); +if($db->update ('users', $data)) echo 'successfully updated'; ``` ### Select Query @@ -75,10 +95,7 @@ $users = $db->get('users', 10); //contains an Array 10 users or select with custom columns set. Functions also could be used ```php -$stats = $db->getOne ("users", "sum(id), count(*) as cnt"); -echo "total ".$stats['cnt']. "users found"; - -$cols = Array ("id, name, email"); +$cols = Array ("id", "name", "email"); $users = $db->get ("users", null, $cols); if ($db->count > 0) foreach ($users as $user) { @@ -92,6 +109,9 @@ or select just one row $db->where ("id", 1); $user = $db->getOne ("users"); echo $user['id']; + +$stats = $db->getOne ("users", "sum(id), count(*) as cnt"); +echo "total ".$stats['cnt']. "users found"; ``` ### Delete Query @@ -122,28 +142,38 @@ print_r($results); // contains Array of returned rows ### Where Method -This method allows you to specify the parameters of the query. +This method allows you to specify where parameters of the query. +WARNING: In order to use column to column comparisons only raw where conditions should be used as column name or functions cant be passed as a bind variable. -Regular == operator: +Regular == operator with variables: ```php -$db->where('id', 1); -$db->where('login', 'admin'); -$results = $db->get('users'); +$db->where ('id', 1); +$db->where ('login', 'admin'); +$results = $db->get ('users'); // Gives: SELECT * FROM users WHERE id=1 AND login='admin'; ``` +Regular == operator with column to column comparison: ```php -$db->where('id', 50, ">="); -// or $db->where('id', Array('>=' => 50)); +// WRONG +$db->where ('lastLogin', 'createdAt'); +// CORRECT +$db->where ('lastLogin = createdAt'); +$results = $db->get ('users'); +// Gives: SELECT * FROM users WHERE lastLogin = createdAt; +``` -$results = $db->get('users'); +```php +$db->where ('id', 50, ">="); +// or $db->where ('id', Array ('>=' => 50)); +$results = $db->get ('users'); // Gives: SELECT * FROM users WHERE id >= 50; ``` BETWEEN / NOT BETWEEN: ```php -$db->where('id', Array(4, 20), 'between'); -// or $db->where('id', Array('between' => Array(4, 20) ) ); +$db->where('id', Array (4, 20), 'BETWEEN'); +// or $db->where ('id', Array ('BETWEEN' => Array(4, 20))); $results = $db->get('users'); // Gives: SELECT * FROM users WHERE id BETWEEN 4 AND 20 @@ -152,7 +182,7 @@ $results = $db->get('users'); IN / NOT IN: ```php $db->where('id', Array(1, 5, 27, -1, 'd'), 'IN'); -// or $db->where('id', Array( 'in' => Array(1, 5, 27, -1, 'd') ) ); +// or $db->where('id', Array( 'IN' => Array(1, 5, 27, -1, 'd') ) ); $results = $db->get('users'); // Gives: SELECT * FROM users WHERE id IN (1, 5, 27, -1, 'd'); @@ -176,14 +206,16 @@ $results = $db->get("users"); Also you can use raw where conditions: ```php $db->where ("id != companyId"); +$db->where ("DATE(createdAt) = DATE(lastLogin)"); $results = $db->get("users"); ``` Or raw condition with variables: ```php -$db->where("id = ? or id = ?", Array(6,2)); +$db->where ("(id = ? or id = ?)", Array(6,2)); +$db->where ("login","mike") $res = $db->get ("users"); -// Gives: SELECT * FROM users WERE id = 2 or id = 2; +// Gives: SELECT * FROM users WHERE (id = 2 or id = 2) and login='mike'; ```