sergeytsalkov / meekrodb
简单的PHP/MySQL库
v3.1.0
2024-08-11 01:40 UTC
Requires
- php: >=7.0.0
- ext-pdo: *
README
了解更多: http://www.meekro.com
MeekroDB是
- 一个PHP MySQL库,可以让您用更少的代码行完成更多的工作,并且使SQL注入100%不可能。
- 自2013年以来,一直是谷歌“php mysql library”排名第一的搜索结果,拥有遍布全球的数千次部署。
- 具有完美安全记录的库。从未发现与安全或SQL注入相关的任何错误。
- 前后兼容,支持从PHP 5.6到最新PHP 8的所有PHP版本。
安装
准备好开始时,请参阅我们网站上的快速入门指南。
手动设置
将db.class.php
文件包含到您的项目中,并按如下设置
require_once 'db.class.php'; DB::$dsn = 'mysql:host=localhost;dbname=meekrodb'; DB::$user = 'my_database_user'; DB::$password = 'my_database_password';
Composer
将此添加到您的composer.json
{ "require": { "sergeytsalkov/meekrodb": "*" } }
代码示例
从数据库中获取一些行并打印出每行的字段。
$accounts = DB::query("SELECT * FROM accounts WHERE type = %s AND age > %i", $type, 15); foreach ($accounts as $account) { echo $account['username'] . "\n"; }
插入新行。
DB::insert('mytable', array( 'name' => $name, 'rank' => $rank, 'location' => $location, 'age' => $age, 'intelligence' => $intelligence ));
获取一行或字段
$account = DB::queryFirstRow("SELECT * FROM accounts WHERE username=%s", 'Joe'); $number_accounts = DB::queryFirstField("SELECT COUNT(*) FROM accounts");
在查询中使用列表
DB::query("SELECT * FROM tbl WHERE name IN %ls AND age NOT IN %li", array('John', 'Bob'), array(12, 15));
记录所有查询和错误
// log all queries and errors to file, or .. DB::$logfile = '/home/username/logfile.txt'; // log all queries and errors to screen DB::$logfile = fopen('php://output', 'w');
嵌套事务
DB::$nested_transactions = true; DB::startTransaction(); // outer transaction // .. some queries.. $depth = DB::startTransaction(); // inner transaction echo $depth . 'transactions are currently active'; // 2 // .. some queries.. DB::commit(); // commit inner transaction // .. some queries.. DB::commit(); // commit outer transaction
更多内容 - 查看:http://meekro.com/docs
MeekroDB比PDO好在哪?
可选静态类模式
大多数Web应用程序只会与一个数据库通信。这意味着将$db对象传递到代码的每个函数中只会添加不必要的杂乱。最简单的方法是使用静态方法,如DB::query(),这也是MeekroDB的工作方式。不过,如果您需要数据库对象,MeekroDB也可以做到。
用更少的代码做更多的事情
以下代码在安全方面对您的参数进行转义,运行查询并获取结果的第一行。尝试用PDO在单行内完成。
$account = DB::queryFirstRow("SELECT * FROM accounts WHERE username=%s", 'Joe');
或者只是一个字段呢?
$created_at = DB::queryFirstField("SELECT created_at FROM accounts WHERE username=%s", 'Joe');
轻松使用列表参数
使用MySQL的IN关键字不应该很复杂。MeekroDB为您简化了语法,PDO则没有。
$accounts = DB::query("SELECT * FROM accounts WHERE username IN %ls", array('Joe', 'Frank'));
简单的插入
使用MySQL的INSERT不应该比传递关联数组更复杂。MeekroDB还简化了许多相关命令,包括有用的INSERT .. ON DUPLICATE UPDATE命令。PDO没有做这些。
DB::insert('accounts', array('username' => 'John', 'password' => 'whatever'));
嵌套事务
MySQL的SAVEPOINT命令允许您创建嵌套事务,但您必须自己跟踪SAVEPOINT id。MeekroDB为您做到这一点,因此您可以在没有任何复杂性和学习曲线的情况下进行嵌套事务。
DB::$nested_transactions = true; DB::startTransaction(); // outer transaction // .. some queries.. $depth = DB::startTransaction(); // inner transaction echo $depth . 'transactions are currently active'; // 2 // .. some queries.. DB::commit(); // commit inner transaction // .. some queries.. DB::commit(); // commit outer transaction
灵活的调试日志和错误处理
您可以将所有查询(以及它们产生的任何错误)记录到文件中用于调试。您还可以添加钩子,让您在任何查询处理过程中的任何点运行自己的函数。
我的其他项目
一点不要脸的自我推广!
- Ark Server Hosting -- Ark: Survival Evolved服务器托管由ArkServers.io提供!
- brooce - 使用Go编写的语言无关的工作队列!用任何语言编写作业,用任何语言安排它们,在任何地方运行它们!