toropyga / db
与Toropyga数据库交互的库
README
用于与数据库交互的类
内容
通用描述
该库包含3个主要类
- MySQL - 用于操作MySQL数据库的类。
- Oracle - 用于操作Oracle数据库的类。
- 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);