jabarihunt / mysql
这是一个简单的类,用于处理MySQL数据库实例,支持TCP和Socket连接。我创建这个类是为了从其他项目中以标准方式与MySQL数据库交互,且开销极低。我将亲自将其作为这些项目的依赖项使用,但它完全可以作为一个独立处理器使用。
v1.5.3
2022-08-16 14:00 UTC
Requires
- php: >=8.0
- ext-mysqli: *
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
-
将此存储库克隆到工作目录:
git clone git@github.com:jabarihunt/mysql.git
-
在您的项目中包含或要求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');
贡献
- 分支存储库
- 创建一个描述性的分支名称
- 编辑您的分支
- 压缩(变基)您的提交
- 创建一个拉取请求
许可
本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md 文件