一个简单且安全的PHP库,用于以异步和非阻塞方式在MySQL数据库上执行SQL查询。提供了准备SQL语句和执行语句的独立方法(以方便准备语句的缓存)以及在一个单独的方法中一起执行,所有这些均基于Amphp,一个PHP中的事件驱动并发框架及其Amphp\Mysql包。

1.0.7 2021-03-03 14:48 UTC

This package is auto-updated.

Last update: 2024-09-29 05:56:18 UTC


README

这是一个简单且安全的PHP库,用于以异步和非阻塞方式在MySQL数据库上执行SQL查询。提供了准备SQL语句和执行语句的独立方法(以方便准备语句的缓存)以及在一个单独的方法中一起执行,所有这些均基于Amphp,一个PHP中的事件驱动并发框架及其Amphp\Mysql包。

为什么选择EaseAmpMysql?

以简单和安全的方式在MySQL/MariaDB上执行SQL查询,防止SQL注入始终是一件重要的事情。另一方面,以异步和非阻塞的方式执行SQL查询可以提高数据库查询的响应速度。此库基于Amphp\MySQL包。

优点

  • 使用准备好的语句
  • 目前支持MySQL/MariaDB连接对象
  • 支持命名参数语法,类似于PDO语法
  • 虽然对输入进行清理总是一个好习惯,但提供给runPreparedQueryexecuteQuery方法的值通过安全执行相应的DB查询来达到目的
  • 有必要的检查来查找数据库连接错误,并在准备数据库查询时重新连接到数据库

入门

使用Composer,运行

composer require invincible-tech-systems/easeampmysql:^1.0.7

注意,vendor文件夹和vendor/autoload.php脚本是由Composer生成的;它们不是PDOLight的一部分。

要包含库,

<?php
require 'vendor/autoload.php';

use InvincibleTechSystems\EaseAmpMysql\EaseAmpMysql;

由于Amphp/dns是此库的依赖之一,为防止由于诸如open_basedir限制/无法访问Linux服务器上的/etc/resolv.conf文件等原因可能发生的递归DNS服务器解析错误,请在您的代码中包含以下行:

use \InvincibleTechSystems\EaseAmpMysql\CustomAmphpDnsConfigLoader;

$customAmphpDnsConfigValues = ["208.67.222.222:53", "208.67.220.220:53","8.8.8.8:53","[2001:4860:4860::8888]:53"];

$CustomAmphpDnsConfigLoader = new CustomAmphpDnsConfigLoader($customAmphpDnsConfigValues, 5000, 3);

\Amp\Dns\resolver(new \Amp\Dns\Rfc1035StubResolver(null, $CustomAmphpDnsConfigLoader));

注意:如果从EaseAmyMysqlRedis(https://github.com/invincible-tech-systems/easeamp-mysql-redis)或EaseAmpRedis(https://github.com/invincible-tech-systems/easeamp-redis)等其他Amphp/dns依赖库加载类似的自定义DNS配置加载器,请跳过包含上述内容。

为了连接到数据库,您需要通过传递数据库凭据作为参数来初始化EaseAmpMysql类,如下所示(服务器主机名、用户名、密码、数据库名)

$dbHost = "localhost";
$dbUsername = "database_username";
$dbPassword = "database_password_value";
$dbName = "database_name";

$dbConn = new EaseAmpMysql($dbHost, $dbUsername, $dbPassword, $dbName);

要执行SQL查询,如果准备和执行语句在一个单独的方法中,则必须调用带有SQL查询和相应的值(作为关联数组)以及CRUD操作类型作为第三个参数的executeQuery方法。

注意:CRUD操作类型的值包括:insertWithIntegerAsPrimaryKey | update | delete | selectSingle | selectMultiple

`INSERT Query (with Named Parameters as placeholders):`

$query = "INSERT INTO `site_members`(`sm_firstname`, `sm_lastname`) VALUES (:sm_firstname,:sm_lastname)";

$values_array = array(':sm_firstname' => 'First Name',':sm_lastname' => 'Last Name');

$queryResult = $dbConn->executeQuery($query, $values_array, "insertWithIntegerAsPrimaryKey");

	
`UPDATE Query (with Named Parameters as placeholders):`

$query = "UPDATE `site_members` SET `sm_firstname`=:sm_firstname, `sm_lastname`=:sm_lastname WHERE `sm_memb_id`=:sm_memb_id";

$values_array = array(':sm_firstname' => 'Srirama',':sm_lastname' => 'D',':sm_memb_id' => 2);

$queryResult = $dbConn->executeQuery($query, $values_array, "update");
	
`SELECT Query (with Named Parameters as placeholders):`

$query = "SELECT * FROM `site_members` WHERE `sm_memb_id`=:sm_memb_id";

$values_array = array(':sm_memb_id' => 1);

$queryResult = $dbConn->executeQuery($query, $values_array, "selectSingle");
`SELECT ALL Query (with Named Parameters as placeholders):`

$query = "SELECT * FROM `site_members`";

$values_array = array();

$queryResult = $dbConn->executeQuery($query, $values_array, "selectMultiple");
	
`DELETE Query (with Named Parameters as placeholders):`

$query = "DELETE FROM `site_members` WHERE `sm_memb_id`=:sm_memb_id";

$values_array = array(':sm_memb_id' => 4);

$queryResult = $dbConn->executeQuery($query, $values_array, "delete");
	

要执行SQL查询,如果准备和执行语句在两个不同的方法中,则必须依次调用prepareQueryrunPreparedQuery方法,使用prepareQuery方法准备的SQL查询和准备好的语句(以及相应的值,作为关联数组)以及CRUD操作类型输入必须提供给runPreparedQuery以执行查询。

注意:CRUD操作类型的值包括:insertWithIntegerAsPrimaryKey | update | delete | selectSingle | selectMultiple

`INSERT Query (with Named Parameters as placeholders):`

$query = "INSERT INTO `site_members`(`sm_firstname`, `sm_lastname`) VALUES (:sm_firstname,:sm_lastname)";

$values_array = array(':sm_firstname' => 'First Name',':sm_lastname' => 'Last Name');

$preparedQuery = $dbConn->prepareQuery($query);
$queryResult = $dbConn->runPreparedQuery($preparedQuery, $values_array, "insertWithIntegerAsPrimaryKey");

	
`UPDATE Query (with Named Parameters as placeholders):`

$query = "UPDATE `site_members` SET `sm_firstname`=:sm_firstname, `sm_lastname`=:sm_lastname WHERE `sm_memb_id`=:sm_memb_id";

$values_array = array(':sm_firstname' => 'Srirama',':sm_lastname' => 'D',':sm_memb_id' => 2);

$preparedQuery = $dbConn->prepareQuery($query);
$queryResult = $dbConn->runPreparedQuery($preparedQuery, $values_array, "update");

	
`SELECT Query (with Named Parameters as placeholders):`

$query = "SELECT * FROM `site_members` WHERE `sm_memb_id`=:sm_memb_id";

$values_array = array(':sm_memb_id' => 1);

$preparedQuery = $dbConn->prepareQuery($query);
$queryResult = $dbConn->runPreparedQuery($preparedQuery, $values_array, "selectSingle");
`SELECT ALL Query (with Named Parameters as placeholders):`

$query = "SELECT * FROM `site_members`";

$values_array = array();

$preparedQuery = $dbConn->prepareQuery($query);
$queryResult = $dbConn->runPreparedQuery($preparedQuery, $values_array, "selectMultiple");

	
`DELETE Query (with Named Parameters as placeholders):`

$query = "DELETE FROM `site_members` WHERE `sm_memb_id`=:sm_memb_id";

$values_array = array(':sm_memb_id' => 4);

$preparedQuery = $dbConn->prepareQuery($query);
$queryResult = $dbConn->runPreparedQuery($preparedQuery, $values_array, "delete");

	

许可

本软件遵循MIT许可证进行分发。请阅读LICENSE以了解软件的可用性和分发信息。