<?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 扩展库的比较

  1. mysqli 的稳定性和安全性,效率有所提高
  2. 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完成.)

  1. 先使用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中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程的更多相关文章

  1. Redis操作Hash工具类封装,Redis工具类封装

    Redis操作Hash工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>> ...

  2. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  3. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...

  4. Java操作文件夹的工具类

    Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...

  5. springboot封装JsonUtil,CookieUtil工具类

    springboot封装JsonUtil,CookieUtil工具类 yls 2019-9-23 JsonUtil public class JsonUtil { private static Obj ...

  6. [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版

    (课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...

  7. 【原创】POI操作Excel导入导出工具类ExcelUtil

    关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.Th ...

  8. Java操作属性文件之工具类

    最近空闲时间整理一下平时常用的一下工具类,重复造轮子实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教... package com.hsuchan.business.utils; import ...

  9. Android开发之使用Handler封装下载图片工具类(源码分享)

    假设每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时能够调用. (1)在清单文件加入权限 <us ...

随机推荐

  1. MapXtreme在asp.net中的使用之加载地图(转)

    MapXtreme在asp.net中的使用之加载地图(转) Posted on 2010-05-04 19:44 Happy Coding 阅读(669) 评论(0) 编辑 收藏 1.地图保存在本地的 ...

  2. 天天模拟器极速畅玩靠谱游戏《仙境传说RO:复兴》

    在电脑上用模拟器打开手游<仙境传说RO:复兴>,今天小编就来写一写天天模拟器的试玩教学. 首先先打开天天模拟器极速版. 在界面中找到鱼图标的靠谱游戏应用中心. 在应用中心中找到<仙境 ...

  3. C++标准程序读书笔记-第三章错误和异常处理

    1.命名空间(namespace)std C++标准程序库中的所有标示符都被定义于一个名为std的namespace 2.标准异常类别 (1)语言本身或标准程序库所抛出的所有异常,都派生自基类exce ...

  4. OpenGL教程之碰撞检测与模型运动

    下面我们要讨论的是如何快速有效的检测物体的碰撞和合乎物理法则的物体运动,先看一下我们要学的: 1)碰撞检测 ·移动的范围 — 平面 ·移动的范围 — 圆柱 ·移动的范围 — 运动的物体 2)符合物理规 ...

  5. oracle 序列

    查询序列值 select td_prodline_attr_seq.nextval from dual     查询用户建的所有序列 用户名 必须大写select SEQUENCE_OWNER,SEQ ...

  6. 《javascript权威指南》阅读笔记 1

    3.1-3.5 3.1 数字 3.1首先声明了在JS中的数字是不区分整数值和浮点数值的.其次给出了js浮点类型表示的范围:最大值是±1.7976931348623157×10^308,最小值±5×10 ...

  7. MySQL计数器表的设计

    如果应用在表中保存计数器,则在更新计数器时可能碰到并发问题.计数器表在web应用中非常常见.可以用这个表缓存一个用户的朋友书.文件下载次数等.创建一张独立的表存储计数器是一种非常好的做法,这样可以使计 ...

  8. Python之路第七天,基础(9)-面向对象(上)

    面向对象的编程思想 回想 我们所学过的编程方法: 面向过程:根据业务逻辑从上到下写堆叠代码. 函数式编程:将重复的代码封装到函数中,只需要写一遍,之后仅调用函数即可. 面向过程编程最易被初学者接受,其 ...

  9. Mybatis.net与MVC入门配置及联合查询动态SQL拼接和简单事务

    第一次学习Mybatis.net,在博客园也找到好多资料,但是在配置成功之后也遇到了一些问题,尤其是在动态SQl拼接时候,这里把遇到的问题还有自己写的一个Demo贴出来,希望能帮到新手,有不适合的地方 ...

  10. SQL Server 解决CPU 高占用的一般step

    第一步: 看这些CPU是不是SQL Server用的. 第二步: 确定SQL Server 有没有引发17883\17884错误 第三步: 找出使用CPU最高的语句进行优化.(sys.dm_exec_ ...