* feat: add ORDER BY and LIMIT OFFSET methods * feat(doc): add ORDER BY and LIMIT to README |
||
|---|---|---|
| src | ||
| .gitignore | ||
| composer.json | ||
| LICENSE | ||
| README.md | ||
php-libmysqldriver
This library provides abstraction methods for common operations on MySQL-like databases like SELECT, UPDATE, and INSERT.
This library is built on top of the PHP MySQL Improved extension.
Install from composer
composer require victorwesterlund/libmysqldriver
use libmysqldriver/MySQL;
Example table name: beverages
| id | beverage_type | beverage_name | beverage_size |
|---|---|---|---|
| 0 | coffee | cappuccino | 10 |
| 1 | coffee | black | 15 |
| 2 | tea | green | 10 |
| 3 | tea | black | 15 |
use libmysqldriver\MySQL;
// Pass through: https://www.php.net/manual/en/mysqli.construct.php
$db = new MySQL($host, $user, $pass, $db);
SELECT
Use MySQL->get() to retrieve columns from a database table
$db->get(
// Name of the database table
string $table,
// (Optional) array or string of column(s) names to SELECT
array|string $columns,
// (Optional) key, value array of column names and values to filter with WHERE <column> = <value>
?array $filter = null,
// (Optional) order by columns name => direction ("ASC"|"DESC")
?array $order_by = null,
// (Optional) max number of rows to return
int|array|null $limit = null
): array|bool;
// Returns array of arrays for each row, or bool if $columns = null
Example
// (Optional) array of columns to return from table. Passing null will return a bool if rows were matched
$columns = ["beverage_name", "beverage_size"];
$beverages = $db->get("beverages", $columns);
// SELECT beverage_name, beverage_size FROM beverages
[
[
"beverage_name" => "cappuccino",
"beverage_size" => 10
],
[
"beverage_name" => "black",
"beverage_size" => 15
],
// ...etc
]
WHERE
// (Optional) associative array of filters where "<column_name> = <value>"
$filter = ["beverage_type" => "coffee"];
$coffee = $db->get("beverages", $columns, $filter);
// SELECT beverage_name, beverage_size FROM beverages WHERE beverage_type = "coffee"
[
[
"beverage_name" => "cappuccino",
"beverage_size" => 10
],
[
"beverage_name" => "black",
"beverage_size" => 15
]
]
ORDER BY
You can also pass an associative array as the 4:th argument to MySQL->get() to ORDER BY a column or multiple columns
$coffee = $db->get("beverages", $columns, $filter, ["beverage_name" => "ASC"], 2);
// SELECT beverage_name, beverage_size FROM beverages ORDER BY beverage_name ASC LIMIT 2
[
[
"beverage_name" => "tea",
"beverage_size" => 10
],
[
"beverage_name" => "tea",
"beverage_size" => 15
],
// ...etc for "beverage_name = coffee"
]
LIMIT
You can also pass an optional integer or associative array as the 5:th argument to MySQL->get() and LIMIT the rows to match.
Note
Passing (int)
1will flatten the returned array fromget()to two dimensions (k => v)
Passing an integer to LIMIT
This will simply LIMIT the results returned to the integer passed
$coffee = $db->get("beverages", $columns, $filter, null, 1);
// SELECT beverage_name, beverage_size FROM beverages WHERE beverage_type = "coffee" LIMIT 1
[
"beverage_name" => "cappuccino",
"beverage_size" => 10
]
Passing an associative array to LIMIT
This will OFFSET and LIMIT the results returned from the first key of the array as OFFSET and the value of that key as LIMIT
$coffee = $db->get("beverages", $columns, $filter, null, [3 => 2]);
// SELECT beverage_name, beverage_size FROM beverages LIMIT 3 OFFSET 2
[
[
"beverage_name" => "tea",
"beverage_size" => 10
],
[
"beverage_name" => "tea",
"beverage_size" => 15
],
// ...etc
]
INSERT
Use MySQL->insert() to append a new row to a database table
$db->insert(
// Name of the database table
string $table,
// Array of values to INSERT
array $values
): bool
// Returns true if row was inserted
Example
$db->insert("beverages", [
null,
"coffee",
"latte",
10
]);
// INSERT INTO beverages VALUES (null, "coffee", "latte", 10)
true
UPDATE
Modify existing rows with MySQL->update()
$db->get(
// Name of the database table
string $table,
// Key, value array of column names and values to update
array $fields,
// (Optional) key, value array of column names and values to limit UPDATE to with WHERE <column> = <value>
?array $filter = null,
): bool;
// Returns true if at least 1 row was changed
Example
$db->update("beverages", ["beverage_size" => 10]);
// UPDATE beverages SET beverage_size = 10
true
WHERE
In most cases you probably want to UPDATE against a constaint. Passing an array to the 3:rd argument of MySQL->update() will let you define "equals AND" conditions.
$filter = ["beverage_type" => "coffee"];
$update = ["beverage_size" => 10];
$db->update("beverages", $update, $filter);
// UPDATE beverages SET beverage_size = 10 WHERE beverage_type = "coffee"
true