与Toropyga数据库交互的库

v1.2.0 2023-05-26 08:31 UTC

README

用于与数据库交互的类

License Version PHP

内容

通用描述

该库包含3个主要类

  1. MySQL - 用于操作MySQL数据库的类。
  2. Oracle - 用于操作Oracle数据库的类。
  3. PDO_LIB - 使用PDO库的通用类。

所有库中的函数都已标准化。

安装

推荐使用Composer安装FLog库

composer require toropyga/db

配置

默认参数的预设置可以直接在类中进行,或通过命名常量进行。命名常量在调用类之前声明,例如在配置文件中,并定义默认参数

MySQL配置常量

const DB_MYSQL_HOST;                // Имя/адрес сервера БД
const DB_MYSQL_PORT;                // Порт сервера
const DB_MYSQL_NAME;                // Имя базы данных
const DB_MYSQL_USER;                // Имя пользователя
const DB_MYSQL_PASS;                // Пароль пользователя
const DB_MYSQL_STORAGE;             // Сохранять подключение на весь сеанс или подключаться при каждом SQL-запросе
const DB_MYSQL_USE_TRANSACTION;     // Использовать постоянное подключение
const DB_MYSQL_DEBUG;               // Включить или отключить отладочные функции
const DB_MYSQL_ERROR_EXIT;          // Завершить ли работу программы при ошибке
const DB_MYSQL_LOG_NAME;            // Имя файла логов
const DB_MYSQL_LOG_ALL;             // Записывать в лог все действия (true) или только ошибки (false)

ORACLE配置常量

const DB_ORACLE_HOST;               // Имя/адрес сервера БД
const DB_ORACLE_PORT;               // Порт сервера Oracle
const DB_ORACLE_NAME;               // Имя базы данных
const DB_ORACLE_USER;               // Имя пользователя
const DB_ORACLE_PASS;               // Пароль пользователя
const DB_ORACLE_STORAGE;            // Сохранять подключение на весь сеанс или подключаться при каждом SQL-запросе
const DB_ORACLE_CHARSET;            // Кодировка
const DB_ORACLE_DEBUG;              // Включить или отключить отладочные функции
const DB_ORACLE_ERROR_EXIT;         // Завершить ли работу программы при ошибке
const DB_ORACLE_LOG_NAME;           // Имя файла логов
const DB_ORACLE_LOG_ALL;            // Записывать в лог все действия (true) или только ошибки (false)
const DB_ORACLE_USE_HOST;           // Тип используемой записи для подключения к Oracle (принимает значение 0, 1 или 2), оптимально 2:
                                    //  0 - используется только имя базы данных
                                    //  1 - используется хост и имя базы данных
                                    //  2 - используется полная запись для подключения

PDO_LIB配置常量

const DB_PDO_TYPE;                  // Тип БД ['mysql', 'pgsql', 'oci', 'odbc']
const DB_PDO_HOST;                  // Имя/адрес сервера БД
const DB_PDO_PORT;                  // Порт сервера
const DB_PDO_NAME;                  // Имя базы данных
const DB_PDO_USER;                  // Имя пользователя
const DB_PDO_PASS;                  // Пароль пользователя
const DB_PDO_DEBUG;                 // Включить или отключить отладочные функции
const DB_PDO_ERROR_EXIT;            // Завершить ли работу программы при ошибке
const DB_PDO_ORACLE_CONNECT_TYPE;   // Тип используемой записи для подключения к Oracle (принимает значение 0, 1 или 2), оптимально 2:
                                    //  0 - используется только имя базы данных
                                    //  1 - используется хост и имя базы данных
                                    //  2 - используется полная запись для подключения

工作描述

连接类文件

require_once("vendor/autoload.php");

初始化类

$MYSQL = new FYN\DB\MySQL();
$ORACLE = new FYN\DB\Oracle();
$PDO = new FYN\DB\PDO_LIB();

或者

/**
 * DBMySQL constructor.
 * Класс для работы с БД MySQL
 * @param mixed $HOST - хост
 * @param mixed $PORT - порт
 * @param mixed $NAME - имя БД
 * @param mixed $USER - пользователь
 * @param mixed $PASS - пароль
 */
$MYSQL = new FYN\DB\MySQL($HOST, $PORT, $NAME, $USER, $PASS);

/**
 * DBOracle constructor.
 * @param string $HOST - сервер
 * @param string $NAME - имя базы данных
 * @param string $USER - пользователь
 * @param string $PASS - пароль
 * @param int $USE_HOST - какая строка подклюения используется (принимает значение 0, 1 или 2) оптимально 2
 * @param string $PORT - порт
 * @param bool $P_CONNECT - использовать ли постоянное подключение
 * @param string $CHARSET - кодировка (по умолчанию - не указана)
 * @param bool $no_connect - не подключаться к БД при инициации класса (по умолчанию - false)
 */
$ORACLE = new FYN\DB\Oracle($HOST, $NAME, $USER, $PASS, $USE_HOST, $PORT, $P_CONNECT, $CHARSET, $no_connect);

/**
 * PDO_LIB constructor.
 * @param string $db_type - тип БД ['mysql', 'pgsql', 'oci', 'odbc']
 * @param string $HOST - сервер
 * @param string $NAME - имя базы данных
 * @param string $USER - пользователь
 * @param string $PASS - пароль
 * @param string $PORT - порт
 * @param string $oracle_connect_type - Тип используемой записи для подключения к Oracle:
 *      0 - используется только имя базы данных
 *      1 - используется хост и имя базы данных
 *      2 - используется полная запись для подключения
 */
$PDO = new FYN\DB\PDO_LIB($db_type, $NAME, $USER, $PASS, $HOST, $PORT, $oracle_connect_type);

获取表列表

$tables1 = $MYSQL->getTableList();
$tables2 = $ORACLE->getTableList();
$tables3 = $PDO->getTableList();

从数组生成INSERT、DELETE和UPDATE查询

$array = array('field1'=>'value1', 'field2'=>'value2', 'field3'=>'value3');
$index = array('field_where1'=>'value_where1', 'field_where2'=>'value_where2');
$sql_insert1 = $MYSQL->getInsertSQL('table_name', $array);
$sql_update1 = $MYSQL->getUpdateSQL('table_name', $array, $index);
$sql_delete1 = $MYSQL->getDeleteSQL('table_name', $array, $index);

$sql_insert2 = $ORACLE->getInsertSQL('table_name', $array);
$sql_update2 = $ORACLE->getUpdateSQL('table_name', $array, $index);
$sql_delete2 = $ORACLE->getDeleteSQL('table_name', $array, $index);

$sql_insert3 = $PDO->getInsertSQL('table_name', $array);
$sql_update3 = $PDO->getUpdateSQL('table_name', $array, $index);
$sql_delete3 = $PDO->getDeleteSQL('table_name', $array, $index);

发送查询

$result1 = $MYSQL->getResult($sql, $one);
$result2 = $ORACLE->getResult($sql, $one);
$result3 = $PDO->getResult($sql, $one);

其中

  • $sql - 数据库的SQL查询
  • $one - 如何返回结果

$one 可以接受以下值

Числовые:
* 0 или '' - (выборка: любое количество строк и столбцов) ожидаем массив ассоциативных массивов ([] => array(имя_поля => значение));
* 1 - (выборка: одна строка / один столбец) ожидаем строку, если при выборке получилось более одного столбца - возвращает ассоциативный массив (имя_поля => значение), если более одной строки - возвращает массив значений ([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение));
* 2 - (выборка: одна строка / множество столбцов) ожидаем ассоциативный массив (имя_поля => значение), если более одной строки и один столбец - возвращает массив значений ([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение));
* 3 - (выборка: множество строк / один столбец) ожидаем ассоциативный массив массивов (имя_поля => array([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение));
* 4 - (выборка: множество строк / один столбец) ожидаем массив значений ([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение)).
* 5 - (выборка: множество строк / 2 столбца) ожидаем массив значений ([значение поля 1] => значение поля 2)
* 6 - (выборка: множество строк / 2 столбца) ожидаем массив значений ([значение поля 1] => значение поля 2), если [значение поля 1] повторяется, то массив принимает вид [значение поля 1] => array([0] => значение поля 2, [1] => значение поля 2...)
* 7 - возврат данных по выполнению запроса (EXPLAIN)

Строковые (аналог числовых):
* 'all' или '' - (выборка: любое количество строк и столбцов) ожидаем массив ассоциативных массивов ([] => array(имя_поля => значение));
* 'one' - (выборка: одна строка / один столбец) ожидаем строку, если при выборке получилось более одного столбца - возвращает ассоциативный массив (имя_поля => значение), если более одной строки - возвращает массив значений ([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение));
* 'row' - (выборка: одна строка / множество столбцов) ожидаем ассоциативный массив (имя_поля => значение), если более одной строки и один столбец - возвращает массив значений ([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение));
* 'column' - (выборка: множество строк / один столбец) ожидаем ассоциативный массив массивов (имя_поля => array([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение));
* 'col' - (выборка: множество строк / один столбец) ожидаем массив значений ([] => значение), если более одной строки и более одного столбца - массив ассоциативных массивов ([] => array(имя_поля => значение)).
* 'dub' - (выборка: множество строк / 2 столбца) ожидаем массив значений ([значение поля 1] => значение поля 2)
* 'dub_all' - (выборка: множество строк / 2 столбца) ожидаем массив значений ([значение поля 1] => значение поля 2), если [значение поля 1] повторяется, то массив принимает вид [значение поля 1] => array([0] => значение поля 2, [1] => значение поля 2...)
* 'explain' - возврат данных по выполнению запроса (EXPLAIN)

还可以执行不处理结果的查询(UPDATE、INSERT等)

$MYSQL->query($sql);