hackerpro536 / pdo-class-wrapper
PDO Class Wrapper是PDO(PHP数据对象)库的包装类。众所周知,在任何Web应用程序中,数据库对开发者创建优秀的动态Web应用程序起着重要作用。
Requires
- php: >=5.0.0
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授权。
- 只有经过身份验证的开发者才能通过上面的链接下载。
- 发布的网站必须是PMS授权的客户。
以上未提到的任何其他使用情况都是禁止的。如果您有此项目的非法副本,请友好地联系我们以获取进一步的支持。
LP Group
- 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扩展相比,关键改进包括:面向对象接口
- 支持预定义语句
- 支持多语句
- 支持事务
- 增强调试功能
- 嵌入式服务器支持
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类包装器
PDO类包装器是PDO(PHP数据对象)库的包装类。它具有许多有用的内置函数,可以大大缩短您的Web应用程序数据库代码。您还可以找到一些有助于轻松修复bug的方法。
[来源:Net Tut+]
使用PDO的优势
许多PHP程序员通过使用MySQL或MySQLi扩展来学习如何访问数据库。从PHP 5.1开始,有一个更好的方法。PHP数据对象(PDO)提供了预处理语句和与对象一起工作的方法,这将使您的工作效率大大提高!
PDO类包装器功能
PDO类包装器具有任何数据库类库都有的非常经典的方法
- MySQL query pdoQuery()
- MySQL select query select ()
- MySQL insert query insert ()
- MySQL insert batch insertBatch()
- MySQL update query update()
- MySQL delete query delete()
- MySQL truncate table truncate()
- MySQL drop table drop()
- MySQL describe table describe()
- MySQL count records count()
- Show/debug executed query showQuery()
- Get last insert id getLastInsertId()
- Get all last insert id getAllLastInsertId()
- Get MySQL results results()
- Get MySQL result result()
- Get status of executed query affectedRows()
- MySQL begin transactions start()
- MySQL commit the transaction end()
- MySQL rollback the transaction back()
- 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