stefangabos / zebra_database
一个高级、紧凑且轻量级的MySQL数据库包装库,基于PHP的MySQLi扩展构建。
Requires
- php: >=5.2.0
README
Zebra Database 
一个紧凑、轻量且功能丰富的PHP MySQLi数据库包装器,提供了比PHP默认方式更安全、强大和直观的与MySQL数据库交互的方法。
Zebra_Database支持事务,并提供通过将缓存数据保存到磁盘、会话、使用memcache或redis来缓存查询结果的方式。
该库提供全面的调试界面,包含执行查询的详细信息:执行时间、返回/影响的行数、找到的行的摘录、错误消息、回溯信息等。它还可以自动EXPLAIN SELECT查询(这样就不会再次错过那些键了!)。
在从CLI(命令行界面)调用时可以提供调试信息,并支持通过AJAX请求记录查询。
它鼓励开发者编写可维护的代码,并通过鼓励使用预处理语句来提供更好的默认安全层,其中参数将被自动转义。
代码注释详尽,在PHP的错误报告级别设置为E_ALL时不会生成警告/错误/通知。
🔬 请查看调试控制台的实际操作
特性
-
它使用mysqli扩展与数据库通信,而不是旧的mysql扩展,该扩展自PHP v5.5.0起已正式弃用,并将在未来被移除;这并不是PDO扩展的包装器,因为PDO本身就是一个包装器!
-
即使在从CLI(命令行界面)调用时也可以提供调试信息
-
记录所有查询,包括通过AJAX运行的查询
-
提供了许多强大的方法,以便更容易地与MySQL交互
-
支持无缓冲查询
-
通过鼓励使用预处理语句(其中参数将被自动转义)提供更好的安全层
-
提供非常详细的调试界面,包含有关执行查询的许多有用信息;它还自动EXPLAIN每个SELECT查询
-
代码注释详尽,当PHP的错误报告级别设置为E_ALL时,不会产生警告、错误或通知
📔 文档
查看这个出色的文档!
🎂 支持本项目的发展
您的支持非常受欢迎,它激励我继续从事开源项目。如果您喜欢这个项目,请通过点击页面顶部的星形按钮给它评分。如果您觉得慷慨,也可以通过PayPal给我买杯咖啡或者成为赞助商。感谢您的支持! 🎉
要求
PHP 5.4.0+,并激活了mysqli扩展,MySQL 4.1.22+
若使用memcache作为缓存方法,PHP必须编译了memcache扩展,并且如果memcache_compressed属性设置为TRUE,则需要使用–with-zlib[=DIR]
进行配置
若使用redis作为缓存方法,PHP必须编译了redis扩展,并且如果redis_compressed属性设置为TRUE,则需要使用–with-zlib[=DIR]
进行配置
安装
您可以通过Composer安装Zebra Database
# get the latest stable release composer require stefangabos/zebra_database # get the latest commit composer require stefangabos/zebra_database:dev-master
或者您可以通过下载最新版本,解压,然后将它包含到您的项目中手动安装
require_once 'path/to/Zebra_Database.php';
如何使用
连接到数据库
// instantiate the library $db = new Zebra_Database(); // connect to a server and select a database $db->connect('host', 'username', 'password', 'database');
运行查询
// question marks will re replaced automatically with the escaped values from the array // I ENCOURAGE YOU TO WRITE YOUR QUERIES IN A READABLE FORMAT, LIKE BELOW $db->query(' SELECT column1 , column2 , column3 FROM tablename1 LEFT JOIN tablename2 ON tablename1.column1 = tablename2.column1 WHERE somecriteria = ? AND someothercriteria = ? ', array($somevalue, $someothervalue)); // any fetch method will work with the last result so // there's no need to explicitly pass that around // you could fetch all records to one associative array... $records = $db->fetch_assoc_all(); // you could fetch all records to one associative array // using the values in a specific column as keys $records = $db->fetch_assoc_all('column1'); // or fetch records one by one, as associative arrays while ($row = $db->fetch_assoc()) { // do stuff }
一个INSERT语句
// notice that you can use MySQL functions in values $db->insert( 'tablename', array( 'column1' => $value1, 'column2' => $value2, 'date_updated' => 'NOW()' ) );
一个UPDATE语句
// $criteria will be escaped and enclosed in grave accents, and will // replace the corresponding ? (question mark) automatically // also, notice that you can use MySQL functions in values // when using MySQL functions, the value will be used as it is without being escaped! // while this is ok when using a function without any arguments like NOW(), this may // pose a security concern if the argument(s) come from user input. // in this case we have to escape the value ourselves $db->update( 'tablename', array( 'column1' => $value1, 'column2' => 'TRIM(UCASE("value2"))', 'column3' => 'TRIM(UCASE("'' . $db->escape($value3) . "))', 'date_updated' => 'NOW()' ), 'criteria = ?', array($criteria) );
该库有超过40个方法和20个属性可供使用,以及许多您可以做的事情。我准备了一个出色的文档,以便您能够轻松了解可以做什么。去查看吧!