Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
PHP-MySQLi-Database-Class
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
PHP-MySQLi-Database-Class
Commits
7429e5a8
Commit
7429e5a8
authored
May 10, 2015
by
Alexander Butenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added setQueryOption method
parent
a204875d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
59 additions
and
12 deletions
+59
-12
MysqliDb.php
MysqliDb.php
+36
-11
readme.md
readme.md
+23
-1
No files found.
MysqliDb.php
View file @
7429e5a8
...
...
@@ -43,6 +43,12 @@ class MysqliDb
* @var string
*/
protected
$_lastQuery
;
/**
* The SQL query options required after SELECT, INSERT, UPDATE or DELETE
*
* @var string
*/
protected
$_queryOptions
=
array
();
/**
* An array that holds where joins
*
...
...
@@ -81,7 +87,6 @@ class MysqliDb
* @var string
*/
public
$totalCount
=
0
;
protected
$fetchTotalCount
=
false
;
/**
* Variable which holds last statement error
*
...
...
@@ -193,7 +198,7 @@ class MysqliDb
$this
->
_groupBy
=
array
();
$this
->
_bindParams
=
array
(
''
);
// Create the empty 0 index
$this
->
_query
=
null
;
$this
->
count
=
0
;
$this
->
_queryOptions
=
array
()
;
}
/**
...
...
@@ -238,9 +243,10 @@ class MysqliDb
$stmt
->
execute
();
$this
->
_stmtError
=
$stmt
->
error
;
$this
->
_lastQuery
=
$this
->
replacePlaceHolders
(
$this
->
_query
,
$params
);
$res
=
$this
->
_dynamicBindResults
(
$stmt
);
$this
->
reset
();
return
$
this
->
_dynamicBindResults
(
$stmt
)
;
return
$
res
;
}
/**
...
...
@@ -256,9 +262,28 @@ class MysqliDb
$stmt
=
$this
->
_buildQuery
(
$numRows
);
$stmt
->
execute
();
$this
->
_stmtError
=
$stmt
->
error
;
$res
=
$this
->
_dynamicBindResults
(
$stmt
);
$this
->
reset
();
return
$this
->
_dynamicBindResults
(
$stmt
);
return
$res
;
}
/**
* This method allows you to specify multiple (method chaining optional) options for SQL queries.
*
* @uses $MySqliDb->setQueryOption('name');
*
* @param string/array $options The optons name of the query.
*
* @return MysqliDb
*/
public
function
setQueryOption
(
$options
)
{
if
(
is_array
(
$options
))
$this
->
_queryOptions
=
array_merge
(
$this
->
_queryOptions
,
$options
);
else
$this
->
_queryOptions
[]
=
$options
;
return
$this
;
}
/**
...
...
@@ -267,7 +292,7 @@ class MysqliDb
* @return MysqliDb
*/
public
function
withTotalCount
()
{
$this
->
fetchTotalCount
=
true
;
$this
->
setQueryOption
(
'SQL_CALC_FOUND_ROWS'
)
;
return
$this
;
}
...
...
@@ -284,9 +309,9 @@ class MysqliDb
if
(
empty
(
$columns
))
$columns
=
'*'
;
$this
->
_query
=
$this
->
fetchTotalCount
==
true
?
'SELECT SQL_CALC_FOUND_ROWS '
:
'SELECT '
;
$column
=
is_array
(
$columns
)
?
implode
(
', '
,
$columns
)
:
$columns
;
$this
->
_query
.=
"
$column
FROM "
.
self
::
$_prefix
.
$tableName
;
$this
->
_query
=
'SELECT '
.
implode
(
' '
,
$this
->
_queryOptions
)
.
' '
.
$column
.
" FROM "
.
self
::
$_prefix
.
$tableName
;
$stmt
=
$this
->
_buildQuery
(
$numRows
);
if
(
$this
->
isSubQuery
)
...
...
@@ -294,9 +319,10 @@ class MysqliDb
$stmt
->
execute
();
$this
->
_stmtError
=
$stmt
->
error
;
$res
=
$this
->
_dynamicBindResults
(
$stmt
);
$this
->
reset
();
return
$
this
->
_dynamicBindResults
(
$stmt
)
;
return
$
res
;
}
/**
...
...
@@ -724,9 +750,8 @@ class MysqliDb
if
(
$this
->
_mysqli
->
more_results
())
$this
->
_mysqli
->
next_result
();
if
(
$this
->
fetchTotalCount
===
true
)
{
$this
->
fetchTotalCount
=
false
;
$stmt
=
$this
->
_mysqli
->
query
(
'SELECT FOUND_ROWS();'
);
if
(
in_array
(
'SQL_CALC_FOUND_ROWS'
,
$this
->
_queryOptions
))
{
$stmt
=
$this
->
_mysqli
->
query
(
'SELECT FOUND_ROWS()'
);
$totalCount
=
$stmt
->
fetch_row
();
$this
->
totalCount
=
$totalCount
[
0
];
}
...
...
readme.md
View file @
7429e5a8
...
...
@@ -7,6 +7,7 @@ MysqliDb -- Simple MySQLi wrapper with prepared statements
**[Select Query](#select-query)**
**[Delete Query](#delete-query)**
**[Generic Query](#generic-query-method)**
**[Query Keywords](#query-keywords)**
**[Raw Query](#raw-query-method)**
**[Where Conditions](#where-method)**
**[Order Conditions](#ordering-method)**
...
...
@@ -287,6 +288,28 @@ $users = $db->withTotalCount()->get('users', Array ($offset, $count));
echo
"Showing
{
$count
}
from
{
$db
->
totalCount
}
"
;
```
### Query Keywords
To add LOW PRIORITY | DELAYED | HIGH PRIORITY | IGNORE and the rest of mysql keywords to INSERT , SELECT , UPDATE, DELETE query:
```
php
$db
->
setQueryOption
(
'LOW_PRIORITY'
);
$db
->
insert
(
$table
,
$param
);
// GIVES: INSERT LOW_PRIORITY INTO table ...
```
Also you can use an array of keywords:
```
php
$db
->
setQueryOption
(
Array
(
'LOW_PRIORITY'
,
'IGNORE'
));
$db
->
insert
(
$table
,
$param
);
// GIVES: INSERT LOW_PRIORITY IGNORE INTO table ...
```
Same way keywords could be used in SELECT queries as well:
```
php
$db
->
setQueryOption
(
'SQL_NO_CACHE'
);
$db
->
get
(
"users"
);
// GIVES: SELECT SQL_NO_CACHE * FROM USERS;
```
Optionally you can use method chaining to call where multiple times without referencing your object over an over:
```
php
...
...
@@ -418,7 +441,6 @@ if($db->has("users")) {
return
"Wrong user/password"
;
}
```
### Helper commands
Reconnect in case mysql connection died
```
php
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment