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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 索引和表体系结构(三)

SQL Server 索引和表体系结构&#xff08;三&#xff09; 原文:SQL Server 索引和表体系结构&#xff08;三&#xff09;包含列索引 概述 包含列索引也是非聚集索引&#xff0c;索引结构跟聚集索引结构是一样&#xff0c;有一点不同的地方就是包含列索引的非键列只存储在叶子节…

简单了解线程和进程、多进程和多线程、并发和并行的区别

一&#xff1a;线程与进程 1.概念 线程&#xff1a;是程序执行流的最小单元&#xff0c;是系统独立调度和分配CPU&#xff08;独立运行&#xff09;的基本单位。 进程&#xff1a;是资源分配的基本单位。一个进程包括多个线程。 2.区别&#xff1a; 1.线程与资源分配无关&…

jdbc mysql demo_JDBC_demo:java连接mysql过程

1.任何数据库驱动程序都提供对java.sql.Driver接口的驱动类&#xff0c;mysql-connector-java-5.1.39-bin.jar中Driver&#xff1a;packagecom.mysql.jdbc;importjava.sql.DriverManager;importjava.sql.SQLException;public class Driver extendsNonRegisteringDriverimplemen…

Java中发邮件的6种方法

2019独角兽企业重金招聘Python工程师标准>>> 1.官方标准JavaMail Sun&#xff08;Oracle&#xff09;官方标准&#xff0c;功能强大&#xff0c;用起来比较繁琐。 官方资料&#xff1a;http://www.oracle.com/technetwork/java/javamail/index.html 2.第三方实现…

查询字符串某个字符的个数

select len(05011045)-len(replace(05011045,0,))转载于:https://www.cnblogs.com/zwc-blog/p/3787888.html

假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象

假定Csomething是一个类&#xff0c;执行下面这些语句后&#xff0c;内存里创建了几个Csomething对象 Csomething a(); Csomething b(2); Csomething c[3]; Csomething &ra b; Csomething d b; Csomething *pA c; Csomething *p new Csomething(4); Csomething a();/…

用mongo实现mysql视图_浅谈 MongoDB 的视图

2018 年 9 月 18 日&#xff0c;由 Robert Gravelle 撰写在关系数据库中&#xff0c;视图是由查询定义的可搜索数据子集。视图有时被称为“虚拟表”&#xff0c;因为它们不存储数据&#xff0c;但可以像表一样被查询。MongoDB 最近在版本 3.4 中引入了视图。在今天的文章中&…

将DataTable 数据插入 SQL SERVER 数据库

原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库&#xff1a;一&#xff1a;使用sqlcommand.executenonquery()方法插入 foreach (DataRow datarow in datatable.Rows) { string sql "INSERT INTO [Table_1] ([…

如何在WinForm中发送HTTP请求

Winform窗体中发送HTTP请求手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法手工发送HTTP的GET请 求: 1 string strURL "http://localhost/Play/CH1/Service1.asmx/doSearch?keyword";2 strURL this.textBox1.Text;3 System.Net.HttpWebRequest reques…

mysql两列取小_mysql – 我想获取两列特定列之间的列值

如果我理解正确,我认为你不能用一个查询来做到这一点.您可以尝试使用以下内容.添加了对代码的评论.SET schema database_name_here; -- Database nameSET table table1; -- Table nameSET startColumn column_start;SET endColumn column_end;-- First get the position of…

struts2.1.6教程二、struts.xml配置及例程

1.配置文件的优先级 在struts2中一些配置&#xff08;比如常量&#xff09;可以同时在struts-default.xml&#xff08;只读性&#xff09;&#xff0c;strtus-plguin.xml&#xff08;只读性&#xff09;&#xff0c;struts.xml&#xff0c;struts.properties和web.xml文件中配置…

Linux 压缩和解压命令

tar.gz&#xff1a; 压缩&#xff1a; tar -zcvf 压缩后的包名.tar.gz 压缩的目录 zcvf &#xff1a; z 压缩成gz的后缀 c 创建压缩包 t 查看压缩包内容 v 显示压缩过程(输出压缩的文件) f 固定参数 后边接压缩包 解压&#xff1a; tar -zxvf 压缩包名称.tar.gz [-C 目…

spring注解配置quartz

常规配置quartz可以参考我的另外一篇博文:http://www.cnblogs.com/yangzhilong/p/3349116.html spring配置文件里增加&#xff1a; 命令空间&#xff1a; http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd 配…

java char 空_2020重新出发,JAVA入门,数据类型

数据类型通过上一节&#xff0c;明白了变量就是申请内存来存储值&#xff0c;即当创建变量的时候&#xff0c;需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间&#xff0c;确定了变量的类型&#xff0c;即确定了数据需分配内存空间的大小&#xff0c;数据…

域控制器

1. Server01上创建域控制器&#xff1a;域名uec.com DNS和本机在同一台机器上。2. Server02 创建现有域的额外控制器&#xff0c;同时在本机生成DNS区域&#xff0c;检查DC间复制状态。卸载域控制器&#xff1a;域的备份还原:实例: 域的备份 对当前UEC.COM的域控制器Ser…

u-boot启动参数命令格式

指令功能nand info显示可使用的 Nand Flashnand device [dev]显示或设定当前使用的 Nand Flashnand read addr off sizeNand Flash 读取命令&#xff0c;从 Nand 的 off 偏移地址处读取 size 字节的数据到 SDRAM 的 addr地址。nand write addr off sizeNand Flash 烧写命令&…

iOS7下隐藏status bar的详细研究

info.plist文件中&#xff0c;View controller-based status bar appearance项设为YES&#xff0c;则View controller对status bar的设置优先级高于application的设置。为NO则以application的设置为准&#xff0c;view controller的prefersStatusBarHidden方法无效&#xff0c;…

产品经理应该mysql_数据库对产品经理的重要性

产品经理在设计产品的过程中基本上都在和数据打交道&#xff0c;对产品数据存储结构设计的了解可以帮助产品经理建立产品的数据模型&#xff0c;数据模型就是数据在服务器中存储结构的设计&#xff0c;功能层上看到的是一个个根据用户场景设计的功能&#xff0c;但是实际上在数…

实验一报告

北京电子科技学院&#xff08;BESTI&#xff09; 实 验 报 告 课程&#xff1a;Java   班级&#xff1a; 1352    姓名&#xff1a;谈愈敏   学号&#xff1a;20135220 成绩&#xff1a;   指导教师&#xff1a;娄嘉鹏       实验日期…

mysql中下杠怎么打_怎么打字母下方的短横杠?,下横杠怎么打

下横杠怎么打,怎么打字母下方的短横杠?对于电脑操作&#xff0c;大多数成年人不及现在的孩子们。今天看到同事在编辑一篇文档&#xff0c;需要在字母下面打一条短横杠&#xff0c;如下图所示。但是同事怎么也打不出来&#xff0c;坐在旁边的他的孩子&#xff0c;看着有点不耐烦…