Brand new PDO database operation class php version
Copy code The code is as follows:
class HRDB{
protected $pdo;
protected $res;
protected $config;
/*constructor*/
function __construct($config){
$this->Config = $config;
$this->connect();
}
/*Database connection*/
public function connect(){
$this->pdo = new PDO($this->Config['dsn '], $this->Config['name'], $this->Config['password']);
$this->pdo->query('set names utf8;');
/ /Serialize the result into stdClass
//$this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
//Write your own code to catch Exception
$this->pdo->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/*Database close*/
public function close(){
$this->pdo = null;
}
public function query($sql) {
$res = $this->pdo->query($sql);
if($res){
$this->res = $res;
}
}
public function exec($sql) {
$res = $this->pdo->exec($sql);
if($res){
$this->res = $res;
}
}
public function fetchAll(){
return $this->res->fetchAll();
}
public function fetch(){
return $this->res->fetch();
}
public function fetchColumn(){
return $ this->res->fetchColumn();
}
public function lastInsertId(){
return $this->res->lastInsertId();
}
/**
* Parameter Description
* int $debug Whether to enable debugging, if enabled, the sql statement will be output
* 0 Not enabled
* 1 Enable
* 2 Enable and terminate the program
* int $mode Return type
* 0 Return multiple records
* 1 Return a single record
* 2 Return the number of rows
* string/array $table database table, two value-passing modes
* Normal mode:
* 'tb_member, tb_money'
* Array mode:
* array('tb_member', 'tb_money')
* string/array $fields Database fields to be queried, allowed to be empty, default is to find all, two value-passing modes
* Normal mode:
* 'username, password'
* Array mode:
* array('username', 'password')
* string/array $sqlwhere query conditions, empty allowed, two value-passing modes
* Normal mode:
* 'and type = 1 and username like "%os%"'
* Array mode:
* array('type = 1', 'username like "%os%"')
* string $orderby sorting, the default is id reverse order
*/
public function select($debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="tbid desc"){
//Parameter processing
if(is_array($table)){
$table = implode(', ', $table);
}
if(is_array($fields)){
$fields = implode(', ', $fields);
}
if(is_array($sqlwhere)) {
$sqlwhere = ' and '.implode(' and ', $sqlwhere);
}
//Database operation
if($debug === 0){
if($mode === 2){
$ this->query("select count(tbid) from $table where 1=1 $sqlwhere");
$return = $this->fetchColumn();
}else if($mode === 1){
$this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
$return = $this->fetch();
}else{
$this-> ;query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
$return = $this->fetchAll();
}
return $return;
}else{
if( $mode === 2){
echo "select count(tbid) from $table where 1=1 $sqlwhere";
}else if($mode === 1){
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
}
else{
echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
}
if($debug === 2){
exit;
}
}
}
/**
* Parameter description
* int $debug Whether to enable debugging, if enabled, the sql statement will be output
* 0 Not enabled
* 1 Enable
* 2 Enable and terminate the program
* int $mode return type
* 0 No return information
* 1 Returns the number of execution entries
* 2 Returns the id of the last inserted record
* string/array $table database table, two value-passing modes
* Normal mode:
* 'tb_member, tb_money'
* Array mode:
* array('tb_member', 'tb_money')
* string/array $set Fields and content to be inserted, two value-passing modes
* Normal mode:
* ' username = "test", type = 1, dt = now()'
* Array mode:
* array('username = "test"', 'type = 1', 'dt = now()')
*/
public function insert($debug, $mode, $table, $set){
//Parameter processing
if(is_array($table)){
$table = implode(', ', $table);
}
if(is_array($set)){
$set = implode(', ', $set);
}
//Database operation
if($debug === 0){
if($mode === 2 ){
$this->query("insert into $table set $set");
$return = $this->lastInsertId();
}else if($mode === 1){
$this ->exec("insert into $table set $set");
$return = $this->res;
}else{
$this->query("insert into $table set $set");
$return = NULL;
}
return $return;
}else{
echo "insert into $table set $set";
if($debug === 2){
exit;
}
}
}
/**
* Parameter Description
* int $debug Whether to enable debugging, if it is enabled, the sql statement will be output
* 0 Not enabled
* 1 Enable
* 2 Enable and terminate the program
* int $mode Return type
* 0 No return information
* 1 Returns the number of execution entries
* string $table database table, two value-passing modes
* Normal mode:
* 'tb_member, tb_money'
* Array mode:
* array('tb_member', 'tb_money')
* string/ array $set Fields and content that need to be updated, two value transfer modes
* Normal mode:
* 'username = "test", type = 1, dt = now()'
* Array mode:
* array('username = "test"', 'type = 1', 'dt = now()')
* string/array $sqlwhere Modify the conditions, allow empty, two value-passing modes
* Normal mode:
* 'and type = 1 and username like "%os%"'
* Array mode:
* array('type = 1', 'username like "%os%"')
*/
public function update($debug, $mode, $table, $set, $sqlwhere=""){
//Parameter processing
if(is_array($table)){
$ table = implode(', ', $table);
}
if(is_array($set)){
$set = implode(', ', $set);
}
if(is_array($sqlwhere)){
$sqlwhere = ' and '.implode(' and ', $sqlwhere);
}
//Database operation
if($debug === 0){
if($mode === 1){
$this ->exec("update $table set $set where 1=1 $sqlwhere");
$return = $this->res;
}else{
$this->query("update $table set $ set where 1=1 $sqlwhere");
$return = NULL;
}
return $return;
}else{
echo "update $table set $set where 1=1 $sqlwhere";
if($debug = == 2){
exit;
}
}
}
/**
* Parameter Description
* int $debug Whether to enable debugging, if it is enabled, the sql statement will be output
* 0 Not enabled
* 1 Enable
* 2 Enable and terminate the program
* int $mode Return type
* 0 No return information
* 1 Return the number of execution entries
* string $table database table
* string/array $sqlwhere Delete condition, allowed to be empty, two value-passing modes
* Normal mode:
* 'and type = 1 and username like "%os%" '
* Array mode:
* array('type = 1', 'username like "%os%"')
*/
public function delete($debug, $mode, $table, $sqlwhere=""){
//Parameter processing
if(is_array($sqlwhere)){
$sqlwhere = ' and '.implode(' and ', $sqlwhere);
}
//Database operation
if($debug === 0){
if($ mode === 1){
$this->exec("delete from $table where 1=1 $sqlwhere");
$return = $this->res;
}else{
$this-> query("delete from $table where 1=1 $sqlwhere");
$return = NULL;
}
return $return;
}else{
echo "delete from $table where 1=1 $sqlwhere";
if ($debug === 2){
exit;
}
}
}
}
In fact, the use is not much different from the previous one. The purpose is to facilitate transplantation.
This rewrite has dealt with several issues:
① The insert statement is too complex, and errors are prone to occur in the correspondence between fields and values
Let’s take a look at the most common SQL insert statement
Copy code The code is as follows: insert into tb_member (username , type, dt) values ('test', 1, now())
In the traditional mode, the fields and values parameters are passed in separately, but it is necessary to ensure that the two parameters are passed in in the same order. This can easily lead to disordered ordering or missing parameters.
This time the problem has been modified, using the unique insert syntax of MySQL. The same function as above can be changed to this way of writing
Copy the code The code is as follows: insert into tb_member set username = "test", type = 1, lastlogindt = now()
Just like update, it is clear at a glance.
② Some parameters can be replaced by arrays
For example, this sql
Copy code The code is as follows: delete from tb_member where 1=1 and tbid = 1 and username = "hooray"
When the method is originally called, it needs to be assembled manually Good where condition, the cost of this operation is very high, now you can completely use this form
Copy the code The code is as follows:
$where = array(
'tbid = 1',
'username = "hooray"'
);
$ db->delete(1, 0, 'tb_member', $where);
No matter how many conditions you have, it will not disrupt your thinking. Similarly, not only the where parameter, the set in update can also be in this form (see the complete source code for details)
Copy the code The code is as follows:
$set = array('username = "123"', 'type = 1 ', 'lastlogindt = now()');
$where = array('tbid = 1');
$db->update(1, 0, 'tb_member', $set, $where);
③ Customizable sql statements
Sometimes, sql is too complex, making it impossible to use the methods provided in the class to assemble the sql statement. At this time, a function is needed, which is to directly pass in the sql statement I have assembled, execute it, and return information. Now, this function is also available
Copy code The code is as follows:
$db->query('select username, password from tb_member');
$rs = $db->fetchAll();
Isn’t it very similar? What is the original way to write pdo?
④Support the creation of multiple database connections
The original one is just a database operation method, so it does not support multiple database connections. In implementation, you need to copy 2 identical files and modify some variables. The operation is really complicated. This problem is now solved.
Copy code The code is as follows:
$db_hoorayos_config = array(
'dsn'=>'mysql:host=localhost;dbname=hoorayos',
'name'=>'root',
'password'=> 'hooray'
);
$db = new HRDB($db_hoorayos_config);
$db_hoorayos_config2 = array(
'dsn'=>'mysql:host=localhost;dbname=hoorayos2',
'name'=> 'root',
'password'=>'hooray'
);
$db2 = new HRDB($db_hoorayos_config2);
In this way, 2 database connections can be created at the same time, which facilitates the interaction between the database and the database.
That’s about all the new features, the entire code is not much, welcome to read and understand. The following is the test code I wrote when writing, and it is also provided for everyone to learn.
Copy code The code is as follows:
require_once('global.php');
require_once('inc/setting.inc.php');
$db = new HRDB($db_hoorayos_config);
echo '
select test
';
echo 'Normal mode, pass the string directly in
';
$rs = $db->select(1, 0, 'tb_member', 'username, password', 'and type = 1 and username like "%os%"');
echo '
Array mode, you can pass in an array
';
$fields = array('username', 'password');
$where = array('type = 1', 'username like "%os%"');
$rs = $db->select(1, 0, ' tb_member', $fields, $where);
echo '
insert test
';
echo 'Normal mode, directly pass the string in
';
$db->insert(1, 0, 'tb_member', 'username = "test", type = 1, lastlogindt = now()');
echo '
Array mode, can be passed in Array
';
$set = array('username = "test"', 'type = 1', 'lastlogindt = now()');
$db->insert(1, 0, 'tb_member', $set);
echo '
update test
';
echo 'Normal mode, directly pass the string in
';
$db->update(1, 0, 'tb_member', 'username = "123", type = 1, lastlogindt = now()', 'and tbid = 7');
echo '
Array mode, you can pass in an array
';
$set = array('username = "123"', 'type = 1', 'lastlogindt = now()');
$where = array('tbid = 1');
$db-> update(1, 0, 'tb_member', $set, $where);
echo '
delete test
';
echo 'Normal mode, direct characters Pass the string in
';
$db->delete(1, 0, 'tb_member', 'and tbid = 1 and username = "hooray"');
echo '
Array mode, available Pass in the array
';
$where = array(
'tbid = 1',
'username = "hooray"'
);
$db->delete(1, 0, 'tb_member', $ where);
echo '
custom sql
';
$db->query('select username, password from tb_member');
$rs = $db->fetchAll();
var_dump($rs);
$db->close();
Hot AI Tools
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Undress AI Tool
Undress images for free
Clothoff.io
AI clothes remover
AI Hentai Generator
Generate AI Hentai for free.
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
Hot Topics
1378
52
PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian
Dec 24, 2024 pm 04:42 PM
PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati
How To Set Up Visual Studio Code (VS Code) for PHP Development
Dec 20, 2024 am 11:31 AM
Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c
7 PHP Functions I Regret I Didn't Know Before
Nov 13, 2024 am 09:42 AM
If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op
How do you parse and process HTML/XML in PHP?
Feb 07, 2025 am 11:57 AM
This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an
Explain JSON Web Tokens (JWT) and their use case in PHP APIs.
Apr 05, 2025 am 12:04 AM
JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,
PHP Program to Count Vowels in a String
Feb 07, 2025 pm 12:12 PM
A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total
Explain late static binding in PHP (static::).
Apr 03, 2025 am 12:04 AM
Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.
What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases?
Apr 03, 2025 am 12:03 AM
What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.


