Home php教程 PHP开发 Brand new PDO database operation class php version

Brand new PDO database operation class php version

Dec 02, 2016 pm 01:55 PM
php

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();

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat Commands and How to Use Them
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian 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 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 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? 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. 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 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::). 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? 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.

See all articles