本文实例讲述了php实现的pdo公共类定义与用法。分享给大家供大家参考,具体如下:
db.class.php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
<?php
class db extends \PDO {
private static $_instance = null;
protected $dbName = '' ;
protected $dsn ;
protected $dbh ;
public function __construct( $dbHost , $dbUser , $dbPasswd , $dbName , $dbCharset = 'utf8' ) {
try {
$this ->dsn = 'mysql:host=' . $dbHost . ';dbname=' . $dbName ;
$this ->dbh = new \PDO( $this ->dsn, $dbUser , $dbPasswd );
$this ->dbh->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$this ->dbh->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$this ->dbh-> exec ( 'SET character_set_connection=' . $dbCharset . ';SET character_set_client=' . $dbCharset . ';SET character_set_results=' . $dbCharset );
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public static function getInstance( $dbHost , $dbUser , $dbPasswd , $dbName , $dbCharset = 'utf8' ) {
if (self:: $_instance === null) {
self:: $_instance = new self( $dbHost , $dbUser , $dbPasswd , $dbName , $dbCharset );
}
return self:: $_instance ;
}
public function fetchAll( $sql , $params = array ()) {
try {
$stm = $this ->dbh->prepare( $sql );
if ( $stm && $stm ->execute( $params )) {
return $stm ->fetchAll(\PDO::FETCH_ASSOC);
}
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public function fetchOne( $sql , $params = array ()) {
try {
$result = false;
$stm = $this ->dbh->prepare( $sql );
if ( $stm && $stm ->execute( $params )) {
$result = $stm ->fetch(\PDO::FETCH_ASSOC);
}
return $result ;
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public function fetchColumn( $sql , $params = array ()) {
$result = '' ;
try {
$stm = $this ->dbh->prepare( $sql );
if ( $stm && $stm ->execute( $params )) {
$result = $stm ->fetchColumn();
}
return $result ;
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public function insert( $table , $params = array (), $returnLastId = true) {
$_implode_field = '' ;
$fields = array_keys ( $params );
$_implode_field = implode( ',' , $fields );
$_implode_value = '' ;
foreach ( $fields as $value ) {
$_implode_value .= ':' . $value . ',' ;
}
$_implode_value = trim( $_implode_value , ',' );
$sql = 'INSERT INTO ' . $table . '(' . $_implode_field . ') VALUES (' . $_implode_value . ')' ;
try {
$stm = $this ->dbh->prepare( $sql );
$result = $stm ->execute( $params );
if ( $returnLastId ) {
$result = $this ->dbh->lastInsertId();
}
return $result ;
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public function update( $table , $params = array (), $where = null) {
$_implode_field = '' ;
$_implode_field_arr = array ();
if ( empty ( $where ) ) {
return false;
}
$fields = array_keys ( $params );
foreach ( $fields as $key ) {
$_implode_field_arr [] = $key . '=' . ':' . $key ;
}
$_implode_field = implode( ',' , $_implode_field_arr );
$sql = 'UPDATE ' . $table . ' SET ' . $_implode_field . ' WHERE ' . $where ;
try {
$stm = $this ->dbh->prepare( $sql );
$result = $stm ->execute( $params );
return $result ;
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public function delete ( $sql , $params = array ()) {
try {
$stm = $this ->dbh->prepare( $sql );
$result = $stm ->execute( $params );
return $result ;
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
public function exec ( $sql , $params = array ()) {
try {
$stm = $this ->dbh->prepare( $sql );
$result = $stm ->execute( $params );
return $result ;
} catch (Exception $e ) {
$this ->outputError( $e ->getMessage());
}
}
private function outputError( $strErrMsg ) {
throw new Exception( "MySQL Error: " . $strErrMsg );
}
public function __destruct() {
$this ->dbh = null;
}
}
|
实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<?php
require_once './db.class.php' ;
$pdo = db::getInstance( '127.0.0.1' , 'root' , '111111' , 'php_cms' );
$sql = "select id, title1 from cms_wz where id = :id limit 1" ;
$parame = array ( 'id' => 12,);
$res = $pdo ->fetchOne( $sql , $parame );
var_dump( $res );
$sql = 'SELECT * FROM cms_link' ;
$result = $db ->fetchAll( $sql );
print_r( $result );
//查询记录数量
$sql = 'SELECT COUNT(*) FROM cms_link' ;
$count = $db ->fetchColumn( $sql );
echo $count ;
$data = array (
'siteid' => 1,
'linktype' => 1,
'name' => 'google' ,
'url' => 'http://www.google.com' ,
'listorder' => 0,
'elite' => 0,
'passed' => 1,
'addtime' => time()
);
$lastInsertId = $db ->insert( 'cms_link' , $data );
echo $lastInsertId ;
//用 try
try {
$result = $pdo ->insert( 'news' , $essay );
} catch (Exception $e ) {
error_log ( $e ->getMessage());
error_log ( $e ->getMessage() . ' in ' . __FILE__ . ' on line ' . __LINE__ );
saveLog( 'url文章 : ' . $essay [ 'link' ] . ' 数据插入失败<br>' );
continue ;
}
$data = array (
'siteid' => 1,
'linktype' => 1,
'name' => 'google' ,
'url' => 'http://www.google.com' ,
'listorder' => 0,
'elite' => 0,
'passed' => 1,
'addtime' => time()
);
$db ->insert( 'cms_link' , $data );
$sql = 'DELETE FROM cms_link WHERE linkid=4' ;
$result = $db -> delete ( $sql );
var_dump( $result );
|
希望本文所述对大家PHP程序设计有所帮助。