a1phanumeric/php-mysql-class

这是一个简单易用的PHP MySQL类,可以轻松地添加到任何现有的PHP应用程序中,简化您的MySQL交互。

2.1 2023-11-29 11:01 UTC

This package is auto-updated.

Last update: 2024-09-29 13:04:26 UTC


README

截至2014年12月,我决定上传我之前编写并一直使用的PHP MySQL类。它基于PDO(mysql_*函数已被废弃很长时间了!)。

旧版本目前仍然是这个仓库的一部分,readme文件仍然可用这里

PHP MySQL类

这是一个简单易用的MySQL类,可以轻松地添加到任何现有的PHP应用程序中,简化您的MySQL交互。

设置 v2.0+

使用以下命令通过composer包含类

composer require a1phanumeric/php-mysql-class

在项目中使用,请使用以下命令

use A1phanumeric\DBPDO;

$DB = new DBPDO('db_host', 'db_name', 'db_user', 'db_pass');

设置 v2.0 之前

首先,为主机、数据库名称、用户名和密码定义四个常量

define('DATABASE_NAME', 'my_database');

define('DATABASE_USER', 'username');

define('DATABASE_PASS', 'password');

define('DATABASE_HOST', 'localhost');

然后,将此类包含到您的项目中,如下所示

include_once('/path/to/class.DBPDO.php');

然后调用该类

$DB = new DBPDO();

直接查询

要执行不需要返回任何结果的直接查询(例如更新、插入等...),只需执行以下操作

$DB->execute("UPDATE customers SET email = 'newemail@domain.com' WHERE username = 'a1phanumeric'");

这是使用此类的最简单方法,但现在我们应该使用预处理语句。这意味着不再需要转义任何内容!要使用预处理语句,只需将上述代码更改为以下代码

$DB->execute("UPDATE customers SET email = ? WHERE username = ?", array('newemail@domain.com', 'a1phanumeric'));

该类将调用PDO的预处理语句,并将电子邮件和用户名分别放在它们的位置,同时还会转义传递给它的所有值。注意:您不需要在查询中放置引号,就足够了,PDO会为您处理。

获取行

要使用此类执行选择查询,语法与上述类似,但我们有两个可以使用的函数,fetchfetchAll

fetch简单地返回一行,例如用于获取用户的ID很有用。这返回一个关联数组,看起来像这样

$user = $DB->fetch("SELECT * FROM users WHERE id = ?", $id);

现在 $user 将包含与查询匹配的行的字段数组。哦,那是什么?我们没有将数组作为第二个参数传递,而是只传递了一个变量?这很酷,类会将单个变量当作传递了array($id)一样处理。这是一个方便的小功能,可以节省时间。

fetchAll用于获取多行,参数类似,但结果返回记录数组

$counties = $DB->fetchAll("SELECT * FROM counties");

上面的代码将返回一个包含我在数据库中的县(英国)列表

[0] => Array
(
    [id] => 1
    [county] => London
)

[1] => Array
(
    [id] => 2
    [county] => Bedfordshire
)

[2] => Array
(
    [id] => 3
    [county] => Buckinghamshire
)

然而,如果我想要遍历一些原始数据并检查数据是否与县名匹配怎么办?要做到这一点意味着每次都要遍历这些结果,或者将键移动到多维数组的根维度。但是,如果我们传递第三个变量,我们可以将那一列作为键。

$counties = $DB->fetchAll("SELECT * FROM counties", null, 'county');

注意:我传递了null作为第二个参数,因为我们没有将任何变量传递到查询中进行转义。

这将返回一个如下所示的数组

[London] => Array
(
    [id] => 1
    [county] => London
)

[Bedfordshire] => Array
(
    [id] => 2
    [county] => Bedfordshire
)

[Buckinghamshire] => Array
(
    [id] => 3
    [county] => Buckinghamshire
)

因此,我们当然可以这样做

if(isset($counties[$raw_data['county_name']])){ //执行某些操作 }

许可证

本程序是自由软件:您可以自由分发和/或修改它,前提是您遵守自由软件基金会发布的GNU通用公共许可证的条款,可以是许可证的第3版,也可以是您选择的任何较新版本。

本程序分发时希望对用户有所帮助,但没有任何保证;甚至没有关于其商业性或适用于特定目的的隐含保证。有关详细信息,请参阅GNU通用公共许可证。

您应已随本程序收到GNU通用公共许可证的副本。如果没有,请参阅https://gnu.ac.cn/licenses/