PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程
<?php
class SqlTool {
//属性
private $conn;
private $host="localhost";
private $user="root";
private $password="root";
private $db="test";
function SqlTool(){
$this->conn=mysql_connect($this->host,$this->user,$this->password);
if(!$this->conn){
die("连接数据库失败".mysql_error());
}
mysql_select_db($this->db,$this->conn);
mysql_query("set names utf8");//设置字符集
}
//方法..
// 完成select dql
public function execute_dql($sql){
$res=mysql_query($sql,$this->conn) or die(mysql_error());
return $res;
}
//完成 update,delete ,insert dml
public function execute_dml($sql){
$b=mysql_query($sql,$this->conn);
//echo "添加的id=".mysql_insert_id($this->conn);
if(!$b){
return ;//失败
}else{
if(mysql_affected_rows($this->conn)>){
return ;//表示成功
}else{
return ;//表示没有行数影响.
}
}
}
}
?>
2.使用php的 mysqli 扩展库去操作mysql数据库
简单介绍:
mysqli (mysql improve mysql扩展库的增强版)
mysql 扩展库 和 mysqli 扩展库的比较
- mysqli 的稳定性和安全性,效率有所提高
- mysqi 支持面向对象编程 ,同时 mysqli 扩展库考虑到php老程序员,提供面向过程的编程风格.
mysqli 有两套编程风格:

$mysqli=new MySQLi(“localhost”,”root”,”roo3t”,”test”);
//按照面向对象的方式
if($mysqli->connect_error){
die($mysqli->connect_error);
}
// 考虑兼容低版本
if(mysqli_connect_error()){
die(“连接error”. mysqli_connect_error())
}
mysqli 编程的快速入门
编写一个程序,这个程序从user1表中读取数据,并打印在网页中。(使用mysqli完成.)
- 先使用mysqli面向对象的风格,完成案例
1.1. 配置php.ini 文件让php支持mysqli扩展库
extension=php_mysqli.dll
1.2 建库,建表.
这里我们使用原来的user1表.
1.3 编写代码
<?php
header("Content-type: text/html;charset=utf-8");
//mysqli操作mysql数据库(面向对象风格)
//1.创建MySQLi 对象
$mysqli=new MySQLi("localhost","root","root","test");
//验证是否ok
if($mysqli->connect_error){
die("连接失败".$mysqli->connect_error);
}
//2. 操作数据库(发送sql)
$sql="select * from user1";
//$res 是结果集.mysqli result
$res=$mysqli->query($sql);
//var_dump($res);
//3. 处理结果 mysql_fetch_row();
while($row=$res->fetch_row()){
foreach($row as $key=>$val){
echo "--$val";
}
echo "<br/>";
}
//4. 关闭资源
//释放内存
$res->free();
//关闭连接
$mysqli->close();
?>
3.再使用面向过程的方式给大家演示一下.
//1.得到mysqli连接
header("Content-type: text/html;charset=utf-8");
$mysqli=mysqli_connect("localhost","root","root","test"); if(!$mysqli){
die("连接失败".mysqli_connnect_error($mysqli));
} //2.向数据库发送sql语句(ddl,dml dql ...)
$sql="select * from user1";
$res=mysqli_query($mysqli,$sql);
//var_dump($res);
//3.处理得到的结果
//循环取出$res中的数据mysqli_fetch_row mysql_fetch_row
while($row=mysqli_fetch_row($res)){ foreach($row as $key=>$val){
echo "--$val";
}
echo "<br/>";
} //4.关闭资源
mysqli_free_result($res);
mysqli_close($mysqli);
☞ 在mysqli 扩展中,也提供了四种方式来获取mysqli result结果集
mysqli_result::fetch_assoc <==> mysql_fetch_assoc
mysqli_result::fetch_row <==> mysql_fetch_row
mysqli_result::fetch_array <===> mysql_fetch_array
mysqli_result::fetch_object<===> mysql_fetch_object
这里我们推荐大家使用前两种效率较高
☞ 在mysqli释放结果集有三种方式:
void mysqli_result::free ( void )
void mysqli_result::close ( void )
void mysqli_result::free_result ( void )
☞ mysql 的 sql 语句的特别说明:
如果操作的字段类型是 string 型,则要求我们的 要用 ‘’ 包括。
如果操作的字段类型是 数值型,则可以用 ’80’ 包括,也可以不用
u mysqli的增强-批量执行sql语句
批量执行 dml语句
基本语法
$sqls=”sql1;sql2;...”
mysqli::multi_query($sqls)
//请使用mysqli的mysqi::multi_query() 一次性添加三个用户 宋江 卢俊义 吴用
$sqls="insert into user1 (name,password,email,age) values('宋江','aaa','aa@shu.com',45);";
$sqls.="insert into user1 (name,password,email,age) values('卢俊义','aaa','aa@shu.com',45);";
$sqls.="insert into user1 (name,password,email,age) values('吴用','aaa','aa@shu.com',45);";
//$sqls.="update ;";
//$sqls.="delete ;";
//dml 和 dql
$b=$mysqli->multi_query($sqls);
☞ 批量执行dml语句可以混合使用 delete insert update,但是最好不要使用select
PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程的更多相关文章
- Redis操作Hash工具类封装,Redis工具类封装
Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫
前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- springboot封装JsonUtil,CookieUtil工具类
springboot封装JsonUtil,CookieUtil工具类 yls 2019-9-23 JsonUtil public class JsonUtil { private static Obj ...
- [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版
(课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...
- 【原创】POI操作Excel导入导出工具类ExcelUtil
关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...
- Java操作属性文件之工具类
最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...
- Android开发之使用Handler封装下载图片工具类(源码分享)
假设每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时能够调用. (1)在清单文件加入权限 <us ...
随机推荐
- $digest already in progress
最近在写项目时经常遇到一个小问题,在上下文外改变视图,通常来说我们需要apply()便可以实现,问题是加了apply()后控制台报错:$digest already in progress:随后我把a ...
- JQuery动态表格
功能实现:点击添加按钮,表格增加一行并给其name属性赋予的值,方便获取 点击删除,自动删除这一行 JQuery中定义一个count变量 var count = 1; function add() { ...
- 深刻理解Oracle数据库的启动和关闭 .
Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能. 一.启动和关闭Oracle数据库 对于大多数Oracle DBA来说,启动和 ...
- Mongodb 安装和启动
一.首先去官网下载对应的的mongodb ,本人的操作系统是win7 64位 mongodb-win32-x86_64-2.0.6.rar 解压安装:进入到bin目录下,会看到N多的.exe文件 二. ...
- Dragon Balls--hdu3635(并查集)
Dragon Balls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- http status 400,http 400,400 错误
转载:http://blog.csdn.net/xu_zh_h/article/details/2294233 4 请求失败4xx 4xx应答定义了特定服务器响应的请求失败的情况.客户端不应当在不更改 ...
- Objextive-C几道小题目笔记
//掷骰子题,掷骰子100次,输出每个号出现的次数 void one() { for (int i=1; i<=100; i++) { int a = arc4random() % 6 +1; ...
- 使用Python管理Azure(1):基础配置
Azure提供了丰富的Python SDK来对Azure进行开发管理,包括使用Azure的开源框架在Azure上创建web应用程序,对Azure的虚拟机,存储等进行管理,本系类会简单介绍如何在ASM和 ...
- 为什么在DllMain里不能调用LoadLibrary和FreeLibrary函数?
为什么在DllMain里不能调用LoadLibrary和FreeLibrary函数? MSDN里对这个问题的答案十分的晦涩.不过现在我们已经有了足够的知识来解答这个问题.考虑下面的情况: ...
- SoftLAyer VPN
1,安装softlayer-VPN(即跑VPN客户端)的机器与在SoftLAyer中的HardwareHostServers or VMIServer的privateIP互通