mysql类 php100_php mysql 类
1 <?php2 /**3 * MySQL 數據庫操作工具類, 方便數據庫操作.4 * 示例見底部注釋.5 * @author: fuck me every day6 */
7 class Mysql{8 var $conn;9 var $query_list = array();10 public $query_count = 0;11
12 public function __construct($c){13 if(!isset($c['port'])){14 $c['port'] = '3306';15 }16 $server = $c['host'] . ':' . $c['port'];17 $this->conn = mysql_connect($server, $c['username'], $c['password'], true) or die('connect db error');18 mysql_select_db($c['dbname'], $this->conn) or die('select db error');19 if($c['charset']){20 mysql_query("set names " . $c['charset'], $this->conn);21 }22 }23
24 /**25 * 執行 mysql_query 并返回其結果.26 */
27 public function query($sql){28 $stime = microtime(true);29
30 $result = mysql_query($sql, $this->conn);31 $this->query_count ++;32 if($result === false){33 throw new Exception(mysql_error($this->conn)." in SQL: $sql");34 }35
36 $etime = microtime(true);37 $time = number_format(($etime - $stime) * 1000, 2);38 $this->query_list[] = $time . ' ' . $sql;39 return $result;40 }41
42 /**43 * 執行 SQL 語句, 返回結果的第一條記錄(是一個對象).44 */
45 public function get($sql){46 $result = $this->query($sql);47 if($row = mysql_fetch_object($result)){48 return $row;49 }else{50 return null;51 }52 }53
54 /**55 * 返回查詢結果集, 以 key 為鍵組織成關聯數組, 每一個元素是一個對象.56 * 如果 key 為空, 則將結果組織成普通的數組.57 */
58 public function find($sql, $key=null){59 $data = array();60 $result = $this->query($sql);61 while($row = mysql_fetch_object($result)){62 if(!empty($key)){63 $data[$row->{$key}] = $row;64 }else{65 $data[] = $row;66 }67 }68 return $data;69 }70
71 public functionlast_insert_id(){72 return mysql_insert_id($this->conn);73 }74
75 /**76 * 執行一條帶有結果集計數的 count SQL 語句, 并返該計數.77 */
78 public function count($sql){79 $result = $this->query($sql);80 if($row = mysql_fetch_array($result)){81 return (int)$row[0];82 }else{83 return 0;84 }85 }86
87 /**88 * 開始一個事務.89 */
90 public functionbegin(){91 mysql_query('begin');92 }93
94 /**95 * 提交一個事務.96 */
97 public functioncommit(){98 mysql_query('commit');99 }100
101 /**102 * 回滾一個事務.103 */
104 public functionrollback(){105 mysql_query('rollback');106 }107
108 /**109 * 獲取指定編號的記錄.110 * @param int $id 要獲取的記錄的編號.111 * @param string $field 字段名, 默認為'id'.112 */
113 function load($table, $id, $field='id'){114 $sql = "select * from `{$table}` where `{$field}`='{$id}'";115 $row = $this->get($sql);116 return $row;117 }118
119 /**120 * 保存一條記錄, 調用后, id被設置.121 * @param object $row122 */
123 function save($table, &$row){124 $sqlA = '';125 foreach($row as $k=>$v){126 $sqlA .= "`$k` = '$v',";127 }128
129 $sqlA = substr($sqlA, 0, strlen($sqlA)-1);130 $sql = "insert into `{$table}` set $sqlA";131 $this->query($sql);132 if(is_object($row)){133 $row->id = $this->last_insert_id();134 }else if(is_array($row)){135 $row['id'] = $this->last_insert_id();136 }137 }138
139 /**140 * 更新$arr[id]所指定的記錄.141 * @param array $row 要更新的記錄, 鍵名為id的數組項的值指示了所要更新的記錄.142 * @return int 影響的行數.143 * @param string $field 字段名, 默認為'id'.144 */
145 function update($table, &$row, $field='id'){146 $sqlA = '';147 foreach($row as $k=>$v){148 $sqlA .= "`$k` = '$v',";149 }150
151 $sqlA = substr($sqlA, 0, strlen($sqlA)-1);152 if(is_object($row)){153 $id = $row->{$field};154 }else if(is_array($row)){155 $id = $row[$field];156 }157 $sql = "update `{$table}` set $sqlA where `{$field}`='$id'";158 return $this->query($sql);159 }160
161 /**162 * 刪除一條記錄.163 * @param int $id 要刪除的記錄編號.164 * @return int 影響的行數.165 * @param string $field 字段名, 默認為'id'.166 */
167 function remove($table, $id, $field='id'){168 $sql = "delete from `{$table}` where `{$field}`='{$id}'";169 return $this->query($sql);170 }171
172 function escape(&$val){173 if(is_object($val) || is_array($val)){174 $this->escape_row($val);175 }176 }177
178 function escape_row(&$row){179 if(is_object($row)){180 foreach($row as $k=>$v){181 $row->$k = mysql_real_escape_string($v);182 }183 }else if(is_array($row)){184 foreach($row as $k=>$v){185 $row[$k] = mysql_real_escape_string($v);186 }187 }188 }189
190 function escape_like_string($str){191 $find = array('%', '_');192 $replace = array('\%', '\_');193 $str = str_replace($find, $replace, $str);194 return $str;195 }196 }197 ?>
198 使用例子:
199
200 <?php201 //保存
202 $db->save('table_1', $row);203 //更新
204 $db->update('table_1', $row);205 //刪除
206 $db->remove('table_1', 1);207 //查詢
208 $rows = $db->find($sql, 'id')209 ?>
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql类 php100_php mysql 类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式面试中常见的编程题目
- 下一篇: Mac IDEA 实用快捷键大全(持续更