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 ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值