20250820 v1.0.2-b2
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Пороверка существования данных и их количество
|
||||
# Проверка существования данных и их количество
|
||||
|
||||
Итак, в [прошлой статье](get_data.md) мы получали данные из таблицы `users`. Напомним, что она имеет вид:
|
||||
|
||||
|
@@ -12,7 +12,7 @@ namespace goodboyalex\php_db_components_pack;
|
||||
## Автор и версия
|
||||
|
||||
- **Автор**: Александр Бабаев
|
||||
- **Версия**: 1.0
|
||||
- **Версия**: 1.0.2
|
||||
- **Дата начала поддержки**: с версии 1.0
|
||||
|
||||
## Назначение
|
||||
@@ -70,7 +70,7 @@ $condition = new Condition('age', '>', 18);
|
||||
|
||||
#### Задание условий с помощью функции (`FUNC:`)
|
||||
|
||||
Если в имени колонки передаётся какая-либо функция (начинать такую функцию следует с `FUNC:`), то при обработке она
|
||||
Если в имени колонки передаётся какая-либо функция (начинать такую функцию следует с `FUNC:`), то при обработке она
|
||||
не обрабатывается как столбец. Это же касается и значения.
|
||||
|
||||
Например, давайте добавим условие, что каждое новое имя пользователя начинается с заглавной буквы
|
||||
@@ -82,8 +82,10 @@ $condition = new Condition('FUNC:SUBSTR(name, 1, 1)', "=", 'FUNC:UPPER(SUBSTR(na
|
||||
```
|
||||
|
||||
в результате запрос будет содержать:
|
||||
|
||||
```sql
|
||||
SUBSTR(name, 1, 1) = UPPER(SUBSTR(name, 1, 1)
|
||||
SUBSTR
|
||||
(name, 1, 1) = UPPER(SUBSTR(name, 1, 1)
|
||||
```
|
||||
|
||||
### 2. Метод `Parse`
|
||||
@@ -114,11 +116,12 @@ $parsedCondition = Condition::Parse(['age', '>', 18]);
|
||||
**Синтаксис**:
|
||||
|
||||
```php
|
||||
public function Get(int $index = 0): Tuple;
|
||||
public function Get(DBDriver $driver, int $index = 0): Tuple;
|
||||
```
|
||||
|
||||
**Описание**:
|
||||
|
||||
- **$driver**: Тип драйвера СУБД.
|
||||
- **$index**: Индексация для замены переменных (для предотвращения SQL-инъекций).
|
||||
- Метод возвращает кортеж (tuple), состоящий из двух частей:
|
||||
- SQL-строку с замещаемым параметром (`:paramX`), где X — номер индекса.
|
||||
@@ -127,7 +130,7 @@ public function Get(int $index = 0): Tuple;
|
||||
**Пример использования**:
|
||||
|
||||
```php
|
||||
[$sqlPart, $params] = $condition->Get();
|
||||
[$sqlPart, $params] = $condition->Get(\goodboyalex\php_db_components_pack\enums\DBDriver::MySQL);
|
||||
// $sqlPart будет выглядеть примерно так: "`age` > :param0"
|
||||
// $params будет содержать массив с фактическим значением: ["param0" => 18]
|
||||
```
|
||||
@@ -136,12 +139,13 @@ public function Get(int $index = 0): Tuple;
|
||||
|
||||
```php
|
||||
use goodboyalex\php_db_components_pack\Condition;
|
||||
use goodboyalex\php_db_components_pack\enums\DBDriver;
|
||||
|
||||
// Создаём условие для поиска пользователей по возрасту
|
||||
$condition = new Condition('age', '>', 18);
|
||||
|
||||
// Формируем условие для использования в SQL-запросе
|
||||
list($sql, $parameters) = $condition->Get();
|
||||
[$sql, $parameters] = $condition->Get(DBDriver::MySQL);
|
||||
|
||||
// Теперь можем использовать $sql и $parameters в запросе
|
||||
$query = "SELECT * FROM users WHERE $sql";
|
||||
|
@@ -13,7 +13,7 @@ namespace goodboyalex\php_db_components_pack\classes;
|
||||
## Автор и версия
|
||||
|
||||
- **Автор**: Александр Бабаев
|
||||
- **Версия**: 1.0
|
||||
- **Версия**: 1.0.2
|
||||
- **Дата начала поддержки**: с версии 1.0
|
||||
|
||||
## Назначение
|
||||
@@ -125,11 +125,12 @@ $builder = new ConditionBuilder()->AddGroup(Condition::LOGIC_OR, [new Condition(
|
||||
**Синтаксис**:
|
||||
|
||||
```php
|
||||
public function Build(): Tuple;
|
||||
public function Build(DBDriver $driver): Tuple;
|
||||
```
|
||||
|
||||
**Описание**:
|
||||
|
||||
- **$driver**: Тип драйвера СУБД.
|
||||
- Метод возвращает кортеж (Tuple), состоящий из двух элементов:
|
||||
- SQL-строка с условием, готовым к выполнению.
|
||||
- Массив параметров, необходимых для последующей передачи в подготовленный SQL-запрос.
|
||||
@@ -139,7 +140,7 @@ public function Build(): Tuple;
|
||||
|
||||
```php
|
||||
// $sql будет (`age` >= :age), а params - [':age' = 18]
|
||||
[$sql, $params] = new ConditionBuilder()->AddCondition('age', '>=', 18)->Build();
|
||||
[$sql, $params] = new ConditionBuilder()->AddCondition('age', '>=', 18)->Build(\goodboyalex\php_db_components_pack\enums\DBDriver::MySQL);
|
||||
```
|
||||
|
||||
---
|
||||
@@ -317,9 +318,11 @@ public function WhereLike(string $column, string $value): ConditionBuilder;
|
||||
```
|
||||
|
||||
**Описание**:
|
||||
|
||||
- **$column**: Имя колонки, по которой проводится поиск.
|
||||
- **$value**: Шаблон для поиска (обычно включает символы `%` для указания маски).
|
||||
- Метод добавляет условие в виде `WHERE column LIKE '%value%'` и возвращает объект для продолжительного построения условий.
|
||||
- Метод добавляет условие в виде `WHERE column LIKE '%value%'` и возвращает объект для продолжительного построения
|
||||
условий.
|
||||
|
||||
**Пример использования**:
|
||||
|
||||
@@ -341,10 +344,12 @@ public function AddCondition(string $column, string $operator, mixed $value): Co
|
||||
```
|
||||
|
||||
**Описание**:
|
||||
|
||||
- **$column**: Имя колонки, участвующей в условии.
|
||||
- **$operator**: Любой оператор сравнения (например, `=`, `!=`, `<`, `>`, `IN`, `BETWEEN`, и т.д.).
|
||||
- **$value**: Значение, с которым производится сравнение.
|
||||
- Метод добавляет условие в форме `WHERE column OPERATOR value` и возвращает объект для продолжения построения цепочки условий.
|
||||
- Метод добавляет условие в форме `WHERE column OPERATOR value` и возвращает объект для продолжения построения цепочки
|
||||
условий.
|
||||
|
||||
**Пример использования**:
|
||||
|
||||
|
@@ -13,7 +13,7 @@ namespace goodboyalex\php_db_components_pack\classes;
|
||||
## Автор и версия
|
||||
|
||||
- **Автор**: Александр Бабаев
|
||||
- **Версия**: 1.0
|
||||
- **Версия**: 1.0.2
|
||||
- **Дата начала поддержки**: с версии 1.0
|
||||
|
||||
## Назначение
|
||||
|
@@ -6,7 +6,7 @@
|
||||
## Основная информация
|
||||
|
||||
- **Автор**: Александр Бабаев
|
||||
- **Версия**: 1.0
|
||||
- **Версия**: 1.0.2
|
||||
- **Дата начала поддержки**: с версии 1.0
|
||||
|
||||
## Пространство имен и зависимости
|
||||
@@ -27,6 +27,64 @@ use goodboyalex\php_components_pack\traits\EnumExtensionsTrait;
|
||||
| `OracleDB` | `3` | Драйвер Oracle |
|
||||
| `SQLite` | `4` | Драйвер SQLite |
|
||||
|
||||
## Методы
|
||||
|
||||
### Метод `GetSigns`
|
||||
|
||||
Метод `GetSigns` предназначен для получения знаков, которыми принято заключать имена полей и таблиц в различных системах
|
||||
управления базами данных (СУБД). Некоторые СУБД используют двойные кавычки `"`, квадратные скобки `[]`, обратные
|
||||
апострофы `` ` `` или другие специальные символы для экранирования идентификаторов (имен таблиц, колонок и других
|
||||
объектов базы данных).
|
||||
|
||||
#### Синтаксис
|
||||
|
||||
```php
|
||||
public static function GetSigns(DBDriver $driver): Tuple
|
||||
```
|
||||
|
||||
#### Аргументы
|
||||
|
||||
- **$driver**: Переменная типа `DBDriver`, указывающая на используемую СУБД (например, MySQL, PostgreSQL, SQLite и
|
||||
т.д.).
|
||||
|
||||
#### Возвращаемое значение
|
||||
|
||||
Метод возвращает кортеж `Tuple`, содержащий два элемента:
|
||||
|
||||
- Первый элемент — знак открывающий.
|
||||
- Второй элемент — знак закрывающий.
|
||||
|
||||
Например, для `MySQL` и `PostgreSQL` чаще всего возвращаются символы обратной косой черты и прямой (```"``, ```"``)
|
||||
соответственно, а для `MS SQL Server` — квадратные скобки (`[`, `]`).
|
||||
|
||||
#### Пример использования
|
||||
|
||||
Допустим, у вас есть код, который выводит SQL-запрос с экранированием идентификатора в зависимости от используемой СУБД:
|
||||
|
||||
```php
|
||||
use goodboyalex\php_db_components_pack\enums\DBDriver;
|
||||
|
||||
// Получаем знаки для MySQL
|
||||
[$open, $close] = DBDriver::GetSigns(DBDriver::MYSQL);
|
||||
|
||||
// Использование полученных знаков
|
||||
$sql = sprintf("SELECT %s%s%s FROM users;", $open, 'username', $close);
|
||||
```
|
||||
|
||||
В результате для MySQL получится:
|
||||
|
||||
```sql
|
||||
SELECT `username`
|
||||
FROM users;
|
||||
```
|
||||
|
||||
Аналогично, для PostgreSQL:
|
||||
|
||||
```sql
|
||||
SELECT "username"
|
||||
FROM users;
|
||||
```
|
||||
|
||||
## Особенности реализации
|
||||
|
||||
Используется trait `EnumExtensionsTrait`, предоставляющий дополнительные методы для работы с перечислениями, такие как
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Добро пожаловать в справочное руководство по компонентам PHP DB COMPONENTS PACK!
|
||||
|
||||
**Руководство актуально для версии v1.0**
|
||||
**Руководство актуально для версии v1.0.2**
|
||||
|
||||
**Автор: Александр Бабаев**
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
2. [x] [Создание таблицы](basic_usage/create_table.md)
|
||||
3. [x] [Вставка данных](basic_usage/insert_data.md)
|
||||
4. [x] [Получение данных](basic_usage/get_data.md)
|
||||
5. [x] [Пороверка существования данных и их количество](basic_usage/count_exist_data.md)
|
||||
5. [x] [Проверка существования данных и их количество](basic_usage/count_exist_data.md)
|
||||
6. [x] [Обновление данных](basic_usage/update_data.md)
|
||||
7. [x] [Удаление данных](basic_usage/delete_data.md)
|
||||
8. [x] [Удаление таблицы](basic_usage/drop_table.md)
|
||||
|
Reference in New Issue
Block a user