modularr / database
2.2.1
2020-04-08 15:26 UTC
README
这是一个易于使用的PHP数据库查询类。
API
DB::connect($db='test',$pass='',$user='root',$host='localhost',$type='mysql'); DB::getPdo(); DB::setPdo($db); DB::quote($string,$remove_quotes=false); DB::query($query, $params = array()); DB::fetchAll($query); DB::fetchAll_safe($query); DB::fetch_assoc($query); DB::fetch_safe_assoc($query); DB::fetch_object($query); DB::fetch_safe_object($query); DB::num_rows($query);
见下方使用说明。
连接
此类允许您以您选择的方式连接到PDO,通过简单地提供您的现有对象,或者使用我们的类作为您的数据库包,并在需要将其传递给其他库时请求PDO对象,从而最大化灵活性。
连接语法
您可以使用多种语法进行连接,使其易于使用,既可以在__construct()
中,也可以在connect()
中。
您可以使用关联数组或默认的,它使用倒序来让您首先定义最重要的值,并允许您将不重要的值(如主机或类型)默认为默认值('mysql'和'localhost')。
通过实例化
$db = new Database($db='test',$pass='',$user='root',$host='localhost',$type='mysql'); # Default Syntax $db = new Database(['host'=>$host,'dbname'=>$database,'user'=>$username,'pass'=>$password]); # Alternative Syntax
通过方法
$db->connect(DB,PASS,USER,HOST); # Establish a Connection With PDO
通过现有的PDO对象
$db->setPdo($pdo); # Assign PDO Connection to the Database Class
使用方法和用例
外观是可选的,但它具有主类所有相同的功能。
常规用例
$db = new Database(DB,PASS,USER,HOST); # Establish a Connection $query = $db->query("SELECT * FROM table"); while($item = $db->fetch_object($query)) { echo'#'.htmlspecialchars($item->id).': '.htmlspecialchars($item->name).'<br>'; }
外观用例
从PDO对象创建外观
$db = new Database(DB,PASS,USER,HOST); # Establish a Connection DB::Facade($db); # Initiate Database object Facade
通过外观连接
DB::connect('database','pass','user','host');
用例
$query = DB::query("SELECT * FROM table"); while($item = DB::fetch_object($query)) { echo'#'.htmlspecialchars($item->id).': '.htmlspecialchars($item->name).'<br>'; }
查询
$query = DB::query("SELECT * FROM table WHERE id = ?", [$_GET['id']]);
这是一个带有绑定参数的查询。第一个参数是语句,第二个参数是参数数组(可选)
注意:我们将查询传递到变量中以便以后重用。
引用
$quoted_string = DB::quote($_GET['id']);
# Remove Quotes after quoting, and right before output, # giving you a similar string as mysql_real_escape_string $quoted_string = DB::quote($_GET['id'], 1);
在PDO中转义时,会在转义字符串周围添加引号,如果在执行LIKE
查询时尝试这样做,则可能会出现问题。
# Default Quote adds '' quotes around the field, forcing you to do: DB::query("SELECT * FROM table WHERE field LIKE ?", ['%'.$input.'%']); DB::query("SELECT * FROM table WHERE field LIKE ".DB::quote('%'.$input.'%')); # Removed Quoting, quotes but removes added quotes DB::query("SELECT * FROM table WHERE field LIKE '%".DB::quote($input,1)."%'";
PDO没有提供一种方法来关闭转义字符串周围的引号,因此我们创建了一个函数,它简单地移除引号(第一个和最后一个字符)。这返回了一个类似于旧mysql_real_escape_string函数的字符串。
请注意,这要求您自己开始添加引号。当在PDO中绑定参数时,转义是默认的。因此,转义默认开启,如原始函数(passthrough)。
获取和Safe Fetch
这是一个常规返回的对象。您仍然需要自己应用htmlspecialchars。
$table = DB::fetch_object($query);
这是一个安全返回的对象。htmlspecialchars应用于对象的全部属性。
$table = DB::fetch_safe_object($query);
行数
DB::num_rows($query); # Equivalent of $pdo->rowCount();
数据示例
# Loop Objects while($entry = DB::fetch_safe_object($query)) { # Because of fetch_safe_object we don't need to apply htmlspecialchars echo '<a href="page?id='.$entry->id.'">'.$entry->name.'</a><br />'; } # Single Object $entry = DB::fetch_safe_object($query); echo $entry->name; # Loop Objects Using Foreach instead with Fetchall foreach(DB::fetchAll_safe($query) as $entry) { # Because of fetchAll_safe we don't need to apply htmlspecialchars echo '<a href="page?id='.$entry->id.'">'.$entry->name.'</a><br />'; } # Single Object $entry = DB::fetchAll_safe($query); echo $entry[0]->name;
安装
通过Composer
composer require modularr/database
或者像这样安装
{ "require": { "modularr/database": "2.*" } }
手动
- 下载 发布版 或手动复制文件
- 包含位于 src/ 目录下的 Main.php (这包括 Database.php 和 Facade.php)