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 ...
随机推荐
- 类 的重载(Overloads)与隐藏(Shadows)
我在上篇文章中讲解了类 的继承和重写,如果想要在派生类中重写基类了方法或函数,那首先基类必须要有用 Overridable 关键字的公开声明的方法或函数,这样,基类的派生类才能用 Overrides ...
- 基于Cookie跨域的单点登录问题
由于项目中,需要用的单点登录,主要的思路是:系统1:用户名密码-->写入Cookie-->其他系统读取Cookie. 1.在同一个服务器下的Cookie共享 @Component(&quo ...
- 安装windows7和ubuntu双系统后引导项设置
win7系统,U盘安装ubuntu,在选择[安装启动引导器的设备]时,1.如果你选择的是/dev/sda,即整个硬盘,他会将启动引导器使用grub进行系统引导,而不再使用windows loader, ...
- js scroll 教程
<html><head><script language=javascript>function s(){var c = window.document.body. ...
- strace排除Linux服务器故障
strace是一个有用的小工具 – 大多数Linux系统默认已经安装 – 可以通过跟踪系统调用来让你知道一个程序在后台所做的事情.Strace是一个基础的调试工具;但是即便你不是在跟踪一个问题的时候它 ...
- arrayAccess的接口使用
<?php //get the methods instance of ArrayAccess //get the properties instance of ArrayAccess $ref ...
- python 的内建函数
lambda 函数:lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值 1. map/reduce 函数 (1)map()函数接收两个参数,一个是函数,一个是序列,map将传入 ...
- PHPExcel导出
第一,先查出数据库里面要生成Excel的数据,如: $data= M('User')->findAll(); //查出数据 $name='Excelfile'; //生成的Excel文 ...
- SqlServer取得一个月的所有有日期
SqlServer的自定义函数可以分为三类但我只用过上面两类,可以称作标量函数和表值函数,区别只是返回数据的类型,表值函数返回的是一个虚拟表 SqlServer的函数在这里 因某种需求我写了一个这样的 ...
- 我(webabcd)的文章索引
[最后更新:2014.08.28] 重新想象 Windows Store Apps 系列文章 重新想象 Windows 8 Store Apps 系列文章 重新想象 Windows 8 Store A ...