fulldecent/thin-pdo

该软件包已被废弃,不再维护。作者建议使用colshrapnel/safemysql软件包。

PHP PDO 类的最小扩展,旨在使运行 SQL 语句更加容易

1.2.2 2016-11-29 18:57 UTC

This package is not auto-updated.

Last update: 2019-10-29 21:08:00 UTC


README

弃用通知:此代码在生产系统上运行了几年,效果非常好。从现在起,我使用并推荐使用https://phpdelusions.net/pdo中描述的方法作为更优的方法。

PHP PDO 包装类

PHP PDO 类的最小扩展,旨在使运行 SQL 语句更加容易。

下载最新版本

项目概述

本项目提供 PHP 的 PDO (PHP 数据对象) 类的最小扩展,旨在提高易用性并节省开发时间和精力。这是通过提供 delete、insert、select 和 update 等方法来快速构建常见 SQL 语句、处理产生 SQL 错误时的异常以及自动为适当的 SQL 语句类型返回结果/受影响行数来实现的。

系统要求

  • PHP 5.5+(任何当前 PHP 版本,请参阅https://secure.php.net/supported-versions.php

  • PDO 扩展

  • 适当的 PDO 驱动程序 - PDO_SQLITE、PDO_MYSQL、PDO_PGSQL

  • 目前仅支持 MySQL、SQLite 和 PostgreSQL 数据库类型。

db 类方法

以下是对 db 类中包含的 6 个方法的详细说明和代码示例。

构造函数

<?php
//__contruct Method Declaration
public function __construct($dsn, $user="", $passwd="") { }

//MySQL
$db = new db("mysql:host=127.0.0.1;port=8889;dbname=mydb", "dbuser", "dbpasswd");

//SQLite
$db = new db("sqlite:db.sqlite");
?>

有关如何设置 dsn 参数的更多信息,请参阅以下链接。

delete

<?php
//delete Method Declaration
public function delete($table, $where, $bind="") { }

//DELETE #1
$db->delete("mytable", "Age < 30");

//DELETE #2 w/Prepared Statement
$lname = "Doe";
$bind = array(
    ":lname" => $lname
)
$db->delete("mytable", "LName = :lname", $bind);
?>

如果没有产生 SQL 错误,此方法将返回 DELETE 语句影响的行数。

insert

<?php
//insert Method Declaration
public function insert($table, $info) { }

$insert = array(
    "FName" => "John",
    "LName" => "Doe",
    "Age" => 26,
    "Gender" => "male"
);
$db->insert("mytable", $insert);
?>

如果没有产生 SQL 错误,此方法将返回 INSERT 语句影响的行数。

另请参阅:继承自 PDO 的 $db->lastInsertId();

run

<?php
//run Method Declaration
public function run($sql, $bind="") { }

//MySQL
$sql = <<<STR
CREATE TABLE mytable (
    ID int(11) NOT NULL AUTO_INCREMENT,
    FName varchar(50) NOT NULL,
    LName varchar(50) NOT NULL,
    Age int(11) NOT NULL,
    Gender enum('male','female') NOT NULL,
    PRIMARY KEY (ID)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
STR;
$db->run($sql);

//SQLite
$sql = <<<STR
CREATE TABLE mytable (
    ID INTEGER PRIMARY KEY,
    LName TEXT,
    FName TEXT,
    Age INTEGER,
    Gender TEXT
)
STR;
$db->run($sql);
?>

此方法用于运行无法由包含的 delete、insert、select 或 update 方法处理的自由格式 SQL 语句。如果没有产生 SQL 错误,此方法将返回 DELETE、INSERT 和 UPDATE 语句影响的行数,或 SELECT、DESCRIBE 和 PRAGMA 语句的结果关联数组。

select

<?php
//select Method Declaration
public function select($table, $where="", $bind="", $fields="*") { }

//SELECT #1
$results = $db->select("mytable");

//SELECT #2
$results = $db->select("mytable", "Gender = 'male'");

//SELECT #3 w/Prepared Statement
$search = "J";
$bind = array(
    ":search" => "%$search"
);
$results = $db->select("mytable", "FName LIKE :search", $bind);
?>

setErrorCallbackFunction

<?php
//setErrorCallbackFunction Method Declaration
public function setErrorCallbackFunction($errorCallbackFunction, $errorMsgFormat="html") { }

//The error message can then be displayed, emailed, etc within the callback function.
function myErrorHandler($error) {
}

$db = new db("mysql:host=127.0.0.1;port=8889;dbname=mydb", "dbuser", "dbpasswd");
$db->setErrorCallbackFunction("myErrorHandler");
/*
Text Version
$db->setErrorCallbackFunction("myErrorHandler", "text");

Internal/Built-In PHP Function
$db->setErrorCallbackFunction("echo");
*/
$results = $db->select("mynonexistingtable");
?>

当发生SQL错误时,该项目将通过setErrorCallbackFunction方法指定的回调函数发送格式化(HTML或文本)的错误消息。回调函数的名称应作为不带括号的字符串提供。如上例所示,您可以选择内部/内置的PHP函数或您自己创建的自定义函数。

如果没有产生SQL错误,此方法将返回一个包含结果的关联数组。

update

<?php
//update Method Declaration
public function update($table, $info, $where, $bind="") { }

//Update #1
$update = array(
    "FName" => "Jane",
    "Gender" => "female"
);
$db->update("mytable", $update, "FName = 'John'");

//Update #2 w/Prepared Statement
$update = array(
    "Age" => 24
);
$fname = "Jane";
$lname = "Doe";
$bind = array(
    ":fname" => $fname,
    ":lname" => $lname
);
$db->update("mytable", $update, "FName = :fname AND LName = :lname", $bind);
?>

如果没有产生SQL错误,此方法将返回UPDATE语句影响的行数。