a1phanumeric / php-mysql-class
这是一个简单易用的PHP MySQL类,可以轻松地添加到任何现有的PHP应用程序中,简化您的MySQL交互。
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会为您处理。
获取行
要使用此类执行选择查询,语法与上述类似,但我们有两个可以使用的函数,fetch
和fetchAll
。
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/。