modularr/database

简单数据库库

2.2.1 2020-04-08 15:26 UTC

This package is auto-updated.

Last update: 2024-09-04 23:19:34 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.*"
    }
}

手动

  1. 下载 发布版 或手动复制文件
  2. 包含位于 src/ 目录下的 Main.php (这包括 Database.phpFacade.php