fulldecent / thin-pdo
Requires
- php: >=5.5
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 参数的更多信息,请参阅以下链接。
-
MySQL - http://us3.php.net/manual/en/ref.pdo-mysql.connection.php
-
SQLite - http://us3.php.net/manual/en/ref.pdo-sqlite.connection.php
-
PostreSQL - http://us3.php.net/manual/en/ref.pdo-pgsql.connection.php
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语句影响的行数。