zoukankan      html  css  js  c++  java
  • 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)

    //请使用mysqlimysqi::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

  • 相关阅读:
    db2 load命令装载数据时定位错误出现的位置
    DB2 SQL error: SQLCODE: -668, SQLSTATE: 57016, SQLERRMC: 3
    db2重组所有表和更新表统计信息
    DB2消息
    db2 SQL查询路径
    db2备份与恢复
    博弈-题表
    【POJ1082】Calendar Game (博弈)
    【POJ1067】取石子游戏 (威佐夫博弈)
    【POJ3710】Christmas Game (博弈-树上的删边问题)
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5137770.html
Copyright © 2011-2022 走看看