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 0;//失败
            }else{
                if(mysql_affected_rows($this->conn)>0){
                    return 1;//表示成功
                }else{
                    return 2;//表示没有行数影响.
                }
            }
        }
    }

?>

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‘,‘[email protected]‘,45);";
$sqls.="insert into user1 (name,password,email,age) values(‘卢俊义‘,‘aaa‘,‘[email protected]‘,45);";
$sqls.="insert into user1 (name,password,email,age) values(‘吴用‘,‘aaa‘,‘[email protected]‘,45);";
//$sqls.="update ;";
//$sqls.="delete ;";
//dml 和 dql

$b=$mysqli->multi_query($sqls);

? 批量执行dml语句可以混合使用 delete insert update,但是最好不要使用select

时间: 2024-10-11 22:41:19

PHP中将对数据库的操作,封装成一个工具类以及学会使用面向对象的方式进行编程的相关文章

springData__jpa对数据库进行操作---dao接口和 测试类

一.dao接口 采用方法命名规则,对数据库进行操作 前提是接口必须继承 JPARepository类 package cn.dzl.jpa.dao; import cn.dzl.jpa.entity.Customer; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface CustomerDao extends JpaRepository<Cust

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

关于本类线程安全性的解释: 多数工具方法不涉及共享变量问题,至于添加合并单元格方法addMergeArea,使用ThreadLocal变量存储合并数据,ThreadLocal内部借用Thread.ThreadLocalMap以当前ThreadLocal为key进行存储,设置一次变量,则其他线程也会有上次数据的残留,因此在addMergeArea方法中进行清空的操作.为了保证原子性, 采用ReentrantLock确保一次只有一个线程可以进行添加合并数据的操作. 线程安全性从以上两个方面保证. 水

基于JavaScript封装的Ajax工具类

前段是件由于工作需要无奈编写了一个给予JavaScript封装的工具类,技术有限,误喷,感谢大家的支持. 1.以下是JavaScript 的 Ajax 工具类. function createXMLHttpRequest(){ var req; if(window.XMLHttpRequest){ //兼容非IE 并且兼容 IE7以上的浏览器 req = new XMLHttpRequest(); }else if(window.ActiveXObject){ //在 Internet Expl

Java操作属性文件之工具类

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

利用Jackson封装常用JsonUtil工具类

在日常的项目开发中,接口与接口之间.前后端之间的数据传输一般都是使用JSON格式,那必然会封装一些常用的Json数据转化的工具类,本文讲解下如何利用Jackson封装高复用性的Json转换工具类. 转换格式属性配置 首先,我们需要对Json对象转换自定义些常用配置属性,封装成适合项目接口规则的工具类.代码如下: @Slf4j public class JsonUtil { private static ObjectMapper objectMapper = new ObjectMapper();

JDK1.8 LocalDate 使用方式;LocalDate 封装Util,LocalDate工具类

未完待续 ........ 由于SimpleDateFormat存在线程安全问题,所以在JDK1.8中使用LocalDate和LocalDateTime来进行日期的工具类使用,下边就是原创的LocalDateUtil封装 1.localDate格式化年月日为字符串 2.localDateTime格式化年月日时分秒为字符串 3.localDate时区格式化年月日为字符串 4.localDateTime时区格式化年月日为字符串 5.localDate 转 LocalDate 6.localDateT

JDK1.8 LocalDate 使用方式;LocalDate 封装Util,LocalDate工具类(一)

未完待续 ........ 由于SimpleDateFormat存在线程安全问题,所以在JDK1.8中使用LocalDate和LocalDateTime来进行日期的工具类使用,下边就是原创的LocalDateUtil封装 <阿里巴巴开发手册1.4> 1.localDate格式化年月日为字符串 2.localDateTime格式化年月日时分秒为字符串 3.localDate时区格式化年月日为字符串 4.localDateTime时区格式化年月日为字符串 5.localDate 转 LocalDa

ios-裁剪加裁剪描边加把裁剪封装成一个方法类

// // UIImage+UItool.h // 图片裁剪 // // Created by YaguangZhu on 15/9/10. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import <UIKit/UIKit.h> @interface UIImage (UItool) + (instancetype)imageWithName:(NSString *)name border:(CGFloat)bord

Java数组操作利器:Arrays工具类

java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表. public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 典型用法:List<String> stooges = Arr