大家好! 当然,每个经常用
PHP编写大量文章的人都遇到了优化和简化对
MySQL数据库的查询的问题。 有人已经为自己编写了方便的类/过程,有人在网络的开放空间中找到了一些东西。
由于我的
PHP脚本越来越少地完成一项任务-从数据库中获取并将此数据传递给客户端Java脚本,因此我通过创建一个方便的(当然对我来说)数据库类使自己变得更容易
的MySQL我
将立即进行预订-内置的
mqsli类非常方便且实用,但是
每天都会遇到相同的问题,如果不减轻您的命运会很奇怪。
提供了
exDBase类供您注意,它实际上是
mysqli类的包装器。 立即预约-我是一名初学者程序员,对于在注释或个人消息中编写的代码,我准备提出很多批评。 例如,我并不真正拥有RegExp,它将大大简化代码,也许还有其他抱怨。 但是尽管如此...
整个库包含在一个文件
-exdbase.php中 。 该文件包含
exDBase类
描述 。 要开始工作,您只需要下载文件,注册以下行:
require_once ('exdbase.php')
首先,创建类的实例,这很简单:
$DB = new exDBase (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if ($DB->error) echo " : $DB->error";
$ DB-> error属性将始终具有上次操作的错误(如果有错误),或者为空。
格式几乎与实例化
mysqli类相同。 自然地,您需要用真实值代替主机,用户名,密码和数据库名称,而不是示例中指示的常量。
现在您可以练习了。 假设我们有一个现成的数据库,它有一个包含字段的
客户表:
ID-唯一编号,自动递增
NAME-客户名称
年龄 -客户年龄
AMOUNT-购买金额
封锁-布尔值,客户锁定或有效
设置 -个人参数,我们以JSON格式存储它们
查询数据库
让我们从“
clients ”表中获取所有条目。
为此有一个
fetchArray方法。
$res = $DB->fetchArray ('clients'); // if ($res) foreach ($res as $client) echo print_r ($client, true); //
如果我们只想获取请求的第一条记录?
为此有一个
fetchFirst方法。
$res = $DB->fetchFirst ('clients'); // if ($res) echo print_r ($client, true); //
但是,我们几乎不需要从表中获取所有记录,总是有选择条件(SELECT命令中的WHERE字段)。 我们该怎么办? 是的,非常简单。 这是fetchArray或fetchFirst方法的第二个参数。
假设我们要选择所有名为John的客户。 在我们的课堂上,这可以通过两种方式完成。
第一种是简单地使用“ NAME ='John'”形式的字符串设置条件
$res = $DB->fetchArray ('clients', "NAME = 'John'");
第二种是在数组中设置条件:
$res = $DB->fetchArray ('clients', array ("NAME" => "John"));
还有更多条件吗? 例如,年龄应该是30岁吗? 简单:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", "AGE" => 30));
这样,您可以组合多个搜索词。 但是平等……如果我们想找到所有25岁以上,名字叫John的顾客? 这里有一些特殊的前缀可以帮助您:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25));
除了“> =”,您还可以使用:“>”,“ <”,“ <=”,“!=”,“ <>”,“!=”。 因此,您可以创建复杂程度不同的查询,并始终获得正确的答案。
数据库检索方法的第三个参数是表字段。 可以将它们指定为字符串(例如:“ NAME,AGE”)或array:array(“ NAME”,“ AGE”)。
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"));
fetchArray和fetchFirst fetch方法的第四个也是最后一个参数是排序顺序。 也可以通过字符串(类型:“ ID ASC,NAME DESC”)或数组数组(“ ID” =>“ ASC”,“ NAME” =>“ DESC”)指定。
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"), array ("ID" => "ASC", "NAME" => "DESC"));
好吧,以您要求的数据结尾-以及如何限制选择? 例如,仅需要前10个条目?
这是使用setLimit()方法完成的,如下所示:
$DB->setLimit (10); $res = $DB->fetchArray ('clients', "NAME = 'John'");
setLimit()方法仅对一个请求有效,此后将重置限制。
插入新数据
有一个
insert()方法可以写入新数据。
$id = $DB->insert ('clients', array ("NAME" => 'Peter', "AGE" => 27, "AMOUNT" => 1000.25));
它返回主自动增量键的值(如果在表中指定了一个)。 在我们的例子中,它将返回插入记录的ID。
资料更新
使用
update()方法
更新数据。
$DB->update ('clients', array ("NAME" => 'Peter'), array ("AGE" => 30, "AMOUNT" => 2000.25));
我们更新了名称(字段NAME)为“ Peter”的所有记录。 该方法的第二个参数是选择条件,其格式与SELECT的WHERE格式完全相同。 好吧,该方法的第三个参数是数据本身。 现在所有带有“ Peter”名称的记录都将有30年的历史了,总和将为2000.25。
资料删除
如果您已经了解了库的逻辑,那么删除将非常简单。 该方法称为
delete() 。
$DB->delete ('clients', array ("NAME" => 'Peter'); // 'Peter' $DB->delete ('clients', array (">AGE" => '20'); // 20.
这是对exDBase库的第一次简短介绍。 还有许多其他更高级的功能,但是在其他时间还有更多。
UPD:
您可以在GitHub上下载文件所有人的好代码!