- Class name: Query
- Namespace: JSMF\Database
mixed JSMF\Database\Query::__construct(\JSMF\Database $database, String $command, Int|null $fetchCount)
creates new query
- Visibility: public
- $database JSMF\Database
- $command String - <p>(INSERT,UPDATE,DELETE,SELECT)</p>
- $fetchCount Int|null - <p>(for select commands; fetch one row or all)</p>
\PDOStatement JSMF\Database\Query::getLastStatement()
returns the last PDOStatement if exists or null
- Visibility: public
\JSMF\Database\Query JSMF\Database\Query::from(String $table, String|null $tableAlias)
adds the FROM clause to select commmands
- Visibility: public
- $table String
- $tableAlias String|null
\JSMF\Database\Query JSMF\Database\Query::where(Array $queries, Array $params)
add WHERE clause to select, update, delete commands
- Visibility: public
- $queries Array
- $params Array - <p>(the PDO params used in the queries)</p>
$queries = [
[ 'alias.fieldname', '=?'],
'AND',
[ 'alias.fieldname2', 'IS NOT NULL', 'OR', [
['alias.fieldname3', 'IS NULL'],
'AND'
['alias.fieldname4', 'LIKE "%foo"']
]
],
]
This will result in a WHERE clause like:
WHERE (alias.fieldname=?) AND (alias.fieldname2 IS NOT NULL OR (alias.fieldname3 IS NULL AND alias.fieldname4 LIKE "%foo"))
Queries can be nested as deep as needed by nesting the array too (example with fieldname3 and fieldname4) Each part of the query that is an own array will be surrounded by brackets
It looks more complicated than writing the query by hand, but with this technique the database class can ensure the correct COLLATION for each field
mixed JSMF\Database\Query::orderBy(\JSMF\Database\string $column, String|\JSMF\Database\ASC $direction)
adds order by (can be used multiple times)
@param String $column
- Visibility: public
- $column JSMF\Database\string
- $direction String|JSMF\Database\ASC - <p>@return \JSMF\Database\Query @throw JSMF\Exception</p>
\JSMF\Database\Query JSMF\Database\Query::groupBy(\JSMF\Database\string $column)
adds group by (can be used multiple times)
@param String $column
- Visibility: public
- $column JSMF\Database\string
mixed JSMF\Database\Query::limit(Int $offset, Int $count)
set limit
- Visibility: public
- $offset Int
- $count Int - <p>@return \JSMF\Database\Query @throw JSMF\Exception</p>
\JSMF\Database\Query JSMF\Database\Query::join(String $table, \JSMF\Database\string $tableAlias, String $on, Array $fields, Array $params)
add JOIN
- Visibility: public
- $table String
- $tableAlias JSMF\Database\string
- $on String - <p>(ON Command)</p>
- $fields Array - <p>(fields to select from the joined table)</p>
- $params Array - <p>(additional params when used in ON query)</p>
\JSMF\Database\Query JSMF\Database\Query::leftJoin(String $table, \JSMF\Database\string $tableAlias, String $on, Array $fields, Array $params)
add LEFT JOIN
- Visibility: public
- $table String
- $tableAlias JSMF\Database\string
- $on String - <p>(ON Command)</p>
- $fields Array - <p>(fields to select from the joined table)</p>
- $params Array - <p>(additional params when used in ON query)</p>
\JSMF\Database\Query JSMF\Database\Query::innerJoin(String $table, \JSMF\Database\string $tableAlias, String $on, Array $fields, Array $params)
add INNER JOIN
- Visibility: public
- $table String
- $tableAlias JSMF\Database\string
- $on String - <p>(ON Command)</p>
- $fields Array - <p>(fields to select from the joined table)</p>
- $params Array - <p>(additional params when used in ON query)</p>
\JSMF\Database\Query JSMF\Database\Query::set(String $key, mixed $value)
set column data for INSERT or UPDATE commands
- Visibility: public
- $key String
- $value mixed
\JSMF\Database\Query JSMF\Database\Query::values(Array $data)
set column data for INSERT or UPDATE commands
- Visibility: public
- $data Array - <p>(key=>value)</p>
Void JSMF\Database\Query::setTable(String $table, String|null $tableAlias)
set the table where the query should work on
- Visibility: public
- $table String - <p>(database.tablename)</p>
- $tableAlias String|null - <p>(optional alias, recommended)</p>
String JSMF\Database\Query::getCommand()
get the current query command
- Visibility: public
Void JSMF\Database\Query::addWhere(Array $queries, Array $params)
add a WHERE clause
- Visibility: public
- $queries Array - <p>(for example, see doc-comment in JSMF\Database::where())</p>
- $params Array - <p>(the PDO params used in the queries)</p>
mixed JSMF\Database\Query::addFields(Array $fields)
adds fields for select
- Visibility: public
- $fields Array
mixed JSMF\Database\Query::addCommandExtra(\JSMF\Database\string $commandExtra)
extra to append after command (e.g. for DISTINCT or SQL_NO_CACHE)
- Visibility: public
- $commandExtra JSMF\Database\string
mixed JSMF\Database\Query::addOnDuplicateKeyUpdate()
appends the "on duplicate key update .
.." phrase to the insert query
- Visibility: public
Boolean|Mixed JSMF\Database\Query::execute()
executes the prepared query
- Visibility: public