hackerpro536/pdo-class-wrapper

PDO Class Wrapper是PDO(PHP数据对象)库的包装类。众所周知,在任何Web应用程序中,数据库对开发者创建优秀的动态Web应用程序起着重要作用。

dev-master 2022-08-19 03:48 UTC

This package is auto-updated.

Last update: 2024-09-19 07:59:45 UTC


README

PHP PDO Class Wrapper

[PDO的包装类]
*版本 1.2 (Beta)*
*即将推出版本 1.4 (Beta)*
项目信息
- 开始时间:2017年9月20日。 - 项目经理:[HackerPro536 (LE VAN PHU)](http://levanphu.info) . - 版权:2017 LP Group. - 版本:0.1

我们的服务 - 我们的服务

安装
### 系统要求 - PHP版本:7.0及更高。 - MySQL版本:建议5.6及以上。

请记住,此项目由LP Group授权。

  1. 只有经过身份验证的开发者才能通过上面的链接下载。
  2. 发布的网站必须是PMS授权的客户。

以上未提到的任何其他使用情况都是禁止的。如果您有此项目的非法副本,请友好地联系我们以获取进一步的支持。

LP Group

  1. HackerPro536 (LE VAN PHU) - 首席执行官。
简介

PDO Class Wrapper是PDO(PHP数据对象)库的包装类。众所周知,在任何Web应用程序中,数据库对开发者创建优秀的动态Web应用程序起着重要作用。我们可以使用不同的数据库驱动程序使Web更加互动和动态。但在任何Web项目中,我们也知道安全是开发者关注的重点之一。每个开发者都想确保用户数据非常安全。因此,我们使用PHP中的许多内置功能来防止对数据库的未经授权访问,例如mysql_real_escape_string ()、addslashes ()等。但有时管理大型应用程序和大量代码非常困难。因此,PHP将MySQL改进为MySQLi(MySQL改进)。根据php.net,MySQLi扩展具有许多优势,与MySQL扩展相比,关键改进包括:面向对象接口

  1. 支持预定义语句
  2. 支持多语句
  3. 支持事务
  4. 增强调试功能
  5. 嵌入式服务器支持

PDO MYSQL驱动程序是什么?

PDO MYSQL驱动程序不是一个API,至少从PHP程序员的视角来看是这样。实际上,PDO MYSQL驱动程序位于PDO本身的下层,并提供MySQL特定的功能。程序员仍然调用PDO API,但PDO使用PDO MYSQL驱动程序与MySQL服务器进行通信。PDO MYSQL驱动程序是几个可用的PDO驱动程序之一。其他可用的PDO驱动程序包括针对Firebird和PostgreSQL数据库服务器的驱动程序。PDO MYSQL驱动程序使用PHP扩展框架实现。其源代码位于目录ext/pdo_mysql中。它不向PHP程序员公开API。


PHP的MySQL API选项比较

PDO Comparison

关于PDO类包装器

PDO类包装器是PDO(PHP数据对象)库的包装类。它具有许多有用的内置函数,可以大大缩短您的Web应用程序数据库代码。您还可以找到一些有助于轻松修复bug的方法。

[来源:Net Tut+]

使用PDO的优势

许多PHP程序员通过使用MySQL或MySQLi扩展来学习如何访问数据库。从PHP 5.1开始,有一个更好的方法。PHP数据对象(PDO)提供了预处理语句和与对象一起工作的方法,这将使您的工作效率大大提高!

PDO类包装器功能

PDO类包装器具有任何数据库类库都有的非常经典的方法

  1. MySQL query pdoQuery()
  2. MySQL select query select ()
  3. MySQL insert query insert ()
  4. MySQL insert batch insertBatch()
  5. MySQL update query update()
  6. MySQL delete query delete()
  7. MySQL truncate table truncate()
  8. MySQL drop table drop()
  9. MySQL describe table describe()
  10. MySQL count records count()
  11. Show/debug executed query showQuery()
  12. Get last insert id getLastInsertId()
  13. Get all last insert id getAllLastInsertId()
  14. Get MySQL results results()
  15. Get MySQL result result()
  16. Get status of executed query affectedRows()
  17. MySQL begin transactions start()
  18. MySQL commit the transaction end()
  19. MySQL rollback the transaction back()
  20. Debugger PDO Error setErrorLog()
如何连接PDO类
示例:[A]
$dbConfig = array
(
"host"=>"localhost", "dbname"=>'mydb', "username"=>'root', "password"=>''
);
$db = new PdoWrapper($dbConfig);
示例:[B]
$dbConfig = array
(
"host"=>"localhost", "dbname"=>"mydb", "username"=>'root', "password"=>''
);
$db = PdoWrapper::getPDO($dbConfig);

PDO类包装器方法 说明:

pdoQuery()

方法名和参数

pdoQuery ( string $sSql, array $aBindWhereParam)

说明:此方法用于简单的MySQL查询;您可以使用参数化参数或简单查询来执行您的MySQL查询。

示例

$sql = 'select * from customers limit 5;';
$data = $pdo->pdoQuery($sql)->results();

Raw Query:
SELECT * FROM customers LIMIT 5;

$sql = "select * from customers where (customernumber = '0000' OR customernumber = '45121') ;";
$data = $pdo->pdoQuery($sql)->results();

Raw Query:
SELECT * FROM customers WHERE (customernumber = 103 OR customernumber = 119) ;

$sql = "select * from customers where (customernumber = '0000' OR customernumber = '45121') ;";
$data = $db->pdoQuery($sql)->results();

Raw Query:
SELECT * FROM customers WHERE (customernumber = '0000' OR customernumber = '45121') ;

$sql = "select p.checknumber, p.amount, p.paymentdate, c.customernumber,
c.customerName, c.contactLastName, c.contactFirstName, c.phone, c.addressLine1,
c.addressLine2, c.city, c.state, c.postalCode, c.country from payments as p
inner join customers as c on p.customernumber = c.customernumber
order by p.amount desc limit 2;";
$data = $pdo->pdoQuery($sql)->results();

Raw Query:
SELECT p.checknumber, p.amount, p.paymentdate, c.customernumber, c.customername,
c.contactlastname, c.contactfirstname, c.phone, c.addressline1, c.addressline2,
c.city, c.state, c.postalcode, c.country FROM payments AS p INNER JOIN
customers AS c ON p.customernumber = c.customernumber ORDER BY p.amount DESC LIMIT 2;

select()

方法名和参数

select (string $sTable , array $aColumn, array $aWhere, string $sOther)

说明:select方法是为了从方法中传递表名来获取表数据而设计的,如果您省略列,则将获取请求表的全部字段,否则您可以通过数组传递表字段。如果您想要传递where子句,则可以使用select方法的第三个参数,并通过传递第四个参数发送其他过滤器。

示例

Get all table fields from table without passing 2nd parameter.

$select = $pdo->select('customers');
$data = $select->results();

Raw Query:
SELECT * FROM `customers` ;

Or

You can use one line code to get a result array

$data = $pdo->select('employees')->results();

Raw Query:
SELECT * FROM `employees` ;

Get only selected fields from table

$data = $db->select('employees', array('employeeNumber','lastName','firstName'))->results();

Raw Query:
SELECT employeenumber, lastname, firstname FROM `employees` ;

Or

$fieldsArray = array('employeeNumber','lastName','firstName');
$data = $db->select('employees', $fieldsArray)->results();

Raw Query:
SELECT employeenumber, lastname, firstname FROM `employees` ;

$selectFields = array('employeeNumber','lastName','firstName');
$whereConditions = array('lastname'=>'bow');
$data = $db->select('employees', $selectFields, $whereConditions, 'ORDER BY employeeNumber DESC LIMIT 5')->results();

Raw Query:
SELECT employeenumber, lastname, firstname FROM `employees` WHERE lastname = "bow" ORDER BY employeenumber DESC LIMIT 5;

Custom Where Clause with Select Method:

You can set your own custom where clause

$whereConditions = array('lastname ='=>'bow', 'or jobtitle ='=> 'Sales Rep', 'and isactive ='=>1, 'and officecode ='=> 1 );
$data = $db->select('employees','',$whereConditions)->results();

Raw Query:
SELECT * FROM `employees` WHERE lastname = "bow" OR jobtitle = "sales rep" AND isactive = 1 AND officecode = 1 ;

OR

$whereConditions = array('lastname ='=>'bow', 'or jobtitle ='=> 'Sales Rep', 'and isactive ='=>1, 'and officecode ='=> 1 );
$data = $db->select('employees',array('employeenumber','lastname','jobtitle'),$whereConditions)->results();

Raw Query:
SELECT employeenumber, lastname, jobtitle FROM 'employees' WHERE lastname = "bow" OR jobtitle = "sales rep" AND isactive = 1 AND officecode = 1 ;

insert()

方法名和参数

insert( string $sTable, array $aData )

说明:通过insert方法,您可以向所选表插入记录。只需传递包含字段作为数组键的数据数组,数组数据将插入到表中。insert方法自动将您的数组数据转换为SQL注入安全数据。

示例

$dataArray = array('first_name'=>'Sid','last_name'=>'Mike','age'=>45);
$data = $db->insert('test',$dataArray)->getLastInsertId();

Raw Query:
INSERT INTO `test` (first_name,last_name,age) VALUES ("sid","mike",45);

insertBatch()

方法名和参数

insertBatch(string $sTable, array $aData, boolean $safeModeInsert )

说明:您可以使用此方法在同一表中插入多个数组数据。您只需发送完整的数据数组,其余部分由insertBatch处理。如果您不想执行参数化插入,则可以发送第三个参数为false,如果想要安全的插入,则发送true。insertBatch使用MySQL事务,因此您无需担心失败的数据。如果发生任何错误,它将回滚。

示例

$dataArray[] = array('first_name'=>'Sid','last_name'=>'Mike','age'=>45);
$dataArray[] = array('first_name'=>'Scott','last_name'=>'Dimon','age'=>78);
$dataArray[] = array('first_name'=>'Meena','last_name'=>'Verma','age'=>23);
$data = $db->insertBatch('test',$dataArray, true)->getAllLastInsertId();

Raw Query:
INSERT INTO `test` (first_name, last_name, age) VALUES ("sid", "mike", 45);
INSERT INTO `test` (first_name, last_name, age) VALUES ("scott", "dimon", 78);
INSERT INTO `test` (first_name, last_name, age) VALUES ("meena", "verma", 23);

update()

方法名和参数

update( string $sTable, array $aData, array $aWhere, string  $sOther)

说明:update方法用于使用数组数据更新表。您可以在表中发送更新数据作为数组。

示例

$dataArray = array('first_name'=>'Sangeeta','last_name'=>'Mishra','age'=>35);
$aWhere = array('id'=>23);
$data = $db->update('test', $dataArray, $aWhere)->affectedRows();

Raw Query:
UPDATE `test` SET first_name = "sangeeta", last_name = "mishra", age = 35 WHERE id = 23 ;

Or

$dataArray = array('first_name'=>'Sonia','last_name'=>'Shukla','age'=>23);
$aWhere = array('age'=>35, 'last_name'=>'Mishra');
$data = $db->update('test', $dataArray, $aWhere)->affectedRows();

Raw Query:
UPDATE `test` SET first_name = "sonia", last_name = "shukla", age = 23 WHERE
age = 35 AND last_name = "mishra" ;

delete()

方法名和参数

delete( string $sTable, array $aWhere, string  $sOther )

说明:您可以通过发送表名和您的where子句数组从表中删除记录。

示例

$aWhere = array('age'=>35);
$data = $db->delete('test', $aWhere)->affectedRows();

Raw Query:
DELETE FROM `test` WHERE age = 35 ;

$aWhere = array('age'=>45, 'first_name'=> 'Sonu');
$data = $db->delete('test', $aWhere)->affectedRows();

Raw Query:
DELETE FROM `test` WHERE age = 45 AND first_name = "sonu" ;

truncate()

方法名和参数

truncate( string $sTable )

说明:您可以通过仅传递表名来截断表。

示例

$data = $db->truncate('test');

Raw Query:
TRUNCATE TABLE `test`;

drop()

方法名和参数

drop( string $sTable )

说明:您可以通过仅传递表名来删除表。

示例

$data = $db->drop('test');

Raw Query:
DROP TABLE `test`;

describe()

方法名和参数

describe( string $sTable )

说明:您可以获取表字段名和数据类型。

示例

$data = $db->describe('test');

Raw Query:
DESC  `test`;

count()

方法名和参数

count( string $sTable, string $sWhere )

说明:此函数将返回表中的总行数。

示例

echo $q = $p->count('employees');
$p->showQuery();

Raw Query:
23
SELECT COUNT(*) AS numrows FROM `employees`;

echo $q = $p->count('employees','firstname = "mary"');
$p->showQuery();

Raw Query:
1
SELECT COUNT(*) AS numrows FROM `employees` WHERE firstname = "mary";
echo $q = $p->count('employees','jobtitle="Sales Rep"');
$p->showQuery();

Raw Query:
17
SELECT COUNT(*) AS numrows FROM `employees` WHERE jobtitle="sales rep";

showQuery()

方法名和参数

showQuery( Boolean $logfile )

说明:通过此函数,您可以获取执行的查询。它将在屏幕上显示原始查询。如果您想要将查询记录到日志文件,则可以将第二个参数发送为true。默认情况下为false。

示例

$db->showQuery();

Raw Query:
SELECT COUNT(*) AS numrows FROM `test`;

getLastInsertId()

方法名和参数

getLastInsertId()

说明:通过insert函数获取新插入的ID。

示例

$lid = $db->getLastInsertId();

返回:数字/整数

getAllLastInsertId()

方法名和参数

getAllLastInsertId ()

说明:通过insertBatch函数获取所有新插入的ID。

示例

$lid = $db->getAllLastInsertId();

返回:数组

results()

方法名和参数

results (string $type )

说明:通过执行SELECT或Select查询获取数组结果数据。您可以将结果以数组、XML和JSON三种格式获取。只需将第一个参数传递为'array'、'xml'或'json'。默认情况下将返回数组。

示例

$data = $db->results();
$data = $db->results('xml');
$data = $db->results('json');

返回:数组 | XML | JSON

result()

方法名和参数

results (integer $iRow)

说明:通过请求索引或false从数组数据中获取结果。

示例

$data = $db->result(1);

返回:数组 | false

affectedRows()

方法名和参数

affectedRows()

说明:通过update、delete和select等语句获取受影响的行数或false。

示例

$data = $db->affectedRows();

返回:整数 | false

start()

方法名和参数

start()

说明:开始MySQL事务。

示例

$db->start();

end()

方法名和参数

end()

说明:提交MySQL事务。

示例

$db->end();

back()

方法名和参数

back()

说明:回滚MySQL事务。

示例

$db->back();

setErrorLog()

方法名和参数

setErrorLog (boolean $mode)

说明:setErrorLog方法用于显示/隐藏PDO错误。如果您发送true,则所有错误将在屏幕上显示;如果发送false,则所有错误将存储在相同位置的日志文件中。

示例

$db->setErrorLog(true);

示例连接页面

// include PDO Class Wrapper
include_once 'class/class.pdowrapper.php';

// set connection data
$dbConfig = array
(
"host"=>"localhost", "dbname"=>'sampledb', "username"=>'root', "password"=>''
);

// get instance of PDO Class Wrapper
$db = PdoWrapper::getPDO($dbConfig);

// set error log mode true to show all error on screen
$db->setErrorLog(true);

/* simple update example */
// update array data
$dataArray = array('first_name'=>'Sangeeta','last_name'=>'Mishra','age'=>35);

// where condition array
$aWhere = array('id'=>23);

// call update function
$q = $p->update('test', $dataArray, $aWhere)->showQuery()->affectedRows();

Output:
UPDATE `test` SET first_name = "sangeeta", last_name = "mishra", age = 35 WHERE id = 23 ;
1