jabarihunt/mysql

这是一个简单的类,用于处理MySQL数据库实例,支持TCP和Socket连接。我创建这个类是为了从其他项目中以标准方式与MySQL数据库交互,且开销极低。我将亲自将其作为这些项目的依赖项使用,但它完全可以作为一个独立处理器使用。

v1.5.3 2022-08-16 14:00 UTC

This package is auto-updated.

Last update: 2024-09-16 00:08:04 UTC


README

这是一个简单的类,用于处理MySQL数据库实例,支持TCP和Socket连接。我创建这个类是为了从其他库中以极低的开销与MySQL数据库进行交互,但它完全可以作为一个独立处理器使用。

入门指南

先决条件

您需要设置以下环境变量(通常使用.env文件完成)

MYSQL_HOST="localhost"
MYSQL_DATABASE="manevia_db"
MYSQL_USER="root"
MYSQL_PASSWORD="secretPassword"
MYSQL_SOCKET="NULL"
MYSQL_PORT=3306

根据您如何加载环境变量,您可能可以在设置上述必需的环境变量时引用已定义的变量。这有助于防止在多个位置维护值。例如

DATABASE_HOST="localhost"
DATABASE_DATABASE="manevia_db"
DATABASE_USER="roo"
DATABASE_PASSWORD="secretPassword"
DATABASE_SOCKET="NULL"
DATABASE_PORT=3306

MYSQL_HOST="${DATABASE_HOST}"
MYSQL_DATABASE="${DATABASE_NAME}"
MYSQL_USER="${DATABASE_USER}"
MYSQL_PASSWORD="${DATABASE_PASSWORD}"
MYSQL_SOCKET="${DATABASE_SOCKET}"
MYSQL_PORT=${DATABASE_PORT}

安装

通过Composer

在与您的composer.json文件相同的目录中运行以下命令

composer require jabarihunt/mysql

通过GitHub
  1. 将此存储库克隆到工作目录: git clone git@github.com:jabarihunt/mysql.git

  2. 在您的项目中包含或要求MySQL类...

require('/path/to/cloned/directory/src/MySQL.php');

...或者如果您使用自动加载...

 use jabarihunt/MySQL;

用法

由于该类使用单例设计模式进行连接,因此无需实例化。您可以直接使用可用的公共方法。如果没有调用任何方法,则不会创建数据库连接。您可以使用 use/as 将类别名为其他名称,如下所示

use jabarihunt/MySQL as DB;

/*
 * QUERY THE DATABASE WITH A PREPARED STATEMENT (RECOMMENDED)
 *
 * prepare($query, $paramValues, $paramTypeString = NULL):
 * CONVENIENCE METHOD THAT RETURNS ARRAY OF DATA FOR QUERIES THAT RETURN A RESULT SET, THE NUMBER OF AFFECTED ROWS FOR ALL
 * OTHER QUERIES, OR FALSE ON ERROR.  $paramTypeString IS OPTIONAL, ALL VALUES WILL BE SENT AS STRINGS IF NOT PROVIDED.
 */

    $data = DB::prepare('SELECT name, email FROM users WHERE age > ? AND status = ? AND days_active >= ?', [357, 'retired', 30], 'isi');

/*
 * QUERY THE DATABASE AS A STANDARD QUERY
 *
 * query($query):
 * CONVENIENCE METHOD THAT RETURNS AN ARRAY OF DATA FOR QUERIES THAT RETURN A RESULT SET, TRUE ON SUCCESS, OR FALSE ON ERROR.
 */

    $data = DB::query("SELECT name, email FROM users WHERE age > 69 AND status = 'retired' AND days_active >= 30");

/*
 * SANITIZE VALUES WHEN NOT USING PREPARED STATEMENTS
 * THIS METHOD USES PHP filter_var() SANITIZATION BASED ON THE DATA TYPE
 */

    $string = 'Am I a good string or a naughty string?';

    $string = DB::sanitize($string, DB::DATA_TYPE_INTEGER);     // All characters removed since sanitizing as an int data type!
    $string = DB::sanitize($string);                            // String remains since method defaults to DB::DATA_TYPE_TEXT
    $string = DB::sanitize(NULL);                               // Null values are converted to an empty string before sanitizing

    // CLASS DATA TYPES ARE BASED ON MYSQL DATA TYPES.  DATA TYPES ARE DECLARED IN THE CLASS AS SHOWN BELOW:

        const DATA_TYPE_INTEGER  = ['tinyint', 'smallint', 'mediumint', 'int', 'bigint', 'bit'];
        const DATA_TYPE_REAL     = ['float', 'double', 'decimal'];
        const DATA_TYPE_TEXT     = ['char', 'varchar', 'tinytext', 'text', 'mediumtext', 'longtext'];
        const DATA_TYPE_BINARY   = ['binary', 'varbinary', 'blob', 'tinyblob', 'mediumblob', 'longblob'];
        const DATA_TYPE_TEMPORAL = ['date', 'time', 'year', 'datetime', 'timestamp'];
        const DATA_TYPE_SPATIAL  = ['point', 'linestring', 'polygon', 'geometry', 'multipoint', 'multilinestring', 'multipolygon', 'geometrycollection'];
        const DATA_TYPE_OTHER    = ['enum', 'set'];

/*
 * GET MySQLi OBJECT
 */

    $mysqlObject = DB::getMySQLObject();

/*
 * MYSQL DUMP -> CONVENIENCE METHOD FOR DUMPING A DATABASE SOMEWHERE ON THE MACHINE | USE WITH CAUTION!!!
 * CREATES MYSQL DUMP FILE AT GIVEN PATH WITH FORMAT: <database>_<year>-<month>-<day>_<unix timestamp>.sql
 */

    DB::backup('path/to/my/backup/folder');

贡献

  1. 分支存储库
  2. 创建一个描述性的分支名称
  3. 编辑您的分支
  4. 压缩(变基)您的提交
  5. 创建一个拉取请求

许可

本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md 文件