本文实例讲述了PHP基于单例模式实现的mysql类。分享给大家供大家参考,具体如下:
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
124
125
126
127
128
129
|
<?php defined( 'ACC' )|| exit ( 'Access Denied' ); // 封装mysql操作类,包括连接功能,及查询功能. class mysql extends absdb{ protected static $ins = null; protected $host ; // 主机名 protected $user ; // 用户名 protected $passwd ; // 密码 protected $db ; // 数据库名 protected $port ; // 端口 protected $conn = null; // 在内部操作,获得一个对象 public static function getIns() { if (self:: $ins === null) { self:: $ins = new self(); } $conf = conf::getIns(); self:: $ins ->host = $conf ->host; self:: $ins ->user = $conf ->user; self:: $ins ->passwd = $conf ->pwd; self:: $ins ->db = $conf ->db; self:: $ins ->port = $conf ->port; self:: $ins ->connect(); self:: $ins ->select_db(); self:: $ins ->setChar(); return self:: $ins ; } // 不让外部做new操作, protected function __construct() { } // 连接数据库 public function connect() { $this ->conn = @mysql_connect( $this ->host, $this ->user, $this ->passwd, $this ->port); if (! $this ->conn) { $error = new Exception( '数据库连不上' ,9); throw $error ; } } // 发送sql查询 public function query( $sql ) { $rs = mysql_query( $sql , $this ->conn); if (! $rs ) { log::write( $sql ); } return $rs ; } // 封装一个getAll方法 // 参数:$sql // 返回: array,false public function getAll( $sql ) { $rs = $this ->query( $sql ); if (! $rs ) { return false; } $list = array (); while ( $row = mysql_fetch_assoc( $rs )) { $list [] = $row ; } return $list ; } // 封装一个getRow方法 // 参数:$sql // 返回: array,false public function getRow( $sql ) { $rs = $this ->query( $sql ); if (! $rs ) { return false; } return mysql_fetch_assoc( $rs ); } // 封装一个getOne方法, // 参数: $sql // 返回: int,str(单一的值) public function getOne( $sql ) { $rs = $this ->query( $sql ); if (! $rs ) { return false; } $tmp = mysql_fetch_row( $rs ); return $tmp [0]; } // 封装一个afftect_rows()方法 // 参数:无 // 返回 int 受影响行数 public function affected_rows() { return mysql_affected_rows( $this ->conn); } // 返回最新生成的auto_increment列的值 public function last_id() { return mysql_insert_id( $this ->conn); } // 选库函数 public function select_db() { $sql = 'use ' . $this ->db; return $this ->query( $sql ); } // 设置字符集的函数 public function setChar() { $sql = 'set names utf8' ; return $this ->query( $sql ); } // 自动生成insert语句,update语句并执行 public function autoExecute( $data , $table , $act = 'insert' , $where = '' ) { if ( $act == 'insert' ) { $sql = 'insert into ' . $table . ' (' ; $sql .= implode( ',' ,( array_keys ( $data ))); $sql .= ') values (\'' ; $sql .= implode( "','" , array_values ( $data )); $sql .= "')" ; } else if ( $act == 'update' ) { if (!trim( $where )) { return false; } $sql = 'update ' . $table . ' set ' ; foreach ( $data as $k => $v ) { $sql .= $k ; $sql .= '=' ; $sql .= "'" . $v . "'," ; } $sql = substr ( $sql ,0,-1); $sql .= ' where ' ; $sql .= $where ; } else { return false; } //return $sql; return $this ->query( $sql ); } } |
希望本文所述对大家PHP程序设计有所帮助。