【二十】mysqli基于面向过程与面向对象的编程

面向过程的方式

musqli扩展库操作mysql数据库步骤:

1.获取连接并选择数据库

//语法 mysqli_connect(host,username,password,dbname,port,socket);
    $conn=mysqli_connect("127.0.0.1",‘root‘,‘‘,‘user‘);
    if (!$conn) {
        die("链接失败");
    }

2.设置操作编码

// 语法:mysqli_set_charset(connection,charset);
// 修改数据库连接字符集为 utf8
mysqli_set_charset($conn,"utf-8") ;

3.发送sql指令(分为ddl语句和dml语句、dql语句、dtl语句)

  • ddl语句:数据定义语句
  • dml语句:数据操作语句(update’、insert、delete)
  • dql语句:(select)
  • dtl语句:数据事务语句(rollback、commit)

查询数据(dml语句):返回的是一个结果集

        //查询语句
        $sql="select * from user1";
        //执行sql语句
    $res=mysqli_query($conn,$sql);
        //\打印返回结果为一个结果集
    var_dump($res);
结果集:object(mysqli_result)#2 (5) {
// ["current_field"]=> int(0)
// ["field_count"]=> int(5)
//["lengths"]=> NULL
//["num_rows"]=>int(6)
 //["type"]=> int(0)
//}
    echo "<br/>";
    echo "----".$res->num_rows;
//取结果集的数据
    while ($obj = mysqli_fetch_object($res)) {
        var_dump($obj);
        foreach ($obj as $key => $value) {
            echo "$key------$value";
            echo "<br/>";
        }
        echo "<br/>";
    }    
函数名 说明
mysqli_fetch_assoc($result) 查询到的一条数据以关联数组形式返回 [key]=>value
mysqli_fetch_row($result) 依次取出$res结果集的下一行数据 查询到的一条数据以索引数组形式返回 [0]=>value
mysqli_fetch_array($result) 查询到的一条数据以索引数组和关联数组的混合形式返回[key]=>valuec/[0]=>value
mysqli_fetch_object($result) 查询到的一条数据以对象属性的形式返回  object{[key]=>value}
mysqli_fetch_array($result) 查询到的一条数据以索引数组和关联数组的混合形式返回
mysqli_fetch_array($result,MYSQLI_BOTH) 查询到的一条数据以索引数组和关联数组的混合形式返回
mysqli_fetch_array($result,MYSQLI_ASSOC) 查询到的一条数据以关联数组的混合形式返回
mysqli_fetch_array($result,MYSQLI_ROW) 查询到的一条数据以索引数组的混合形式返回

增删改(dml语句):返回的是一个布尔值

    $sql="INSERT INTO user1(name,password,email,age)VALUES (‘haha‘,MD5(‘123456‘),‘[email protected]‘,16);";
    $res=mysqli_query($conn,$sql) or die("执行失败");
    var_dump($res);
//返回的是一个布尔值
    if (!$res) {
        echo "删除失败";
    }
    echo "受影响的行数: " . mysqli_affected_rows($conn);
    if(mysqli_affected_rows($conn)>0){
        echo "添加成功";
    }else{
        echo "没有影响的行数";
    }    

4.释放资源

注意:释放结果集和关闭连接内填的资源不一样

    // 释放结果集
    mysqli_free_result($res);
     // 函数关闭先前打开的数据库连接
    mysqli_close($conn);

面向对象的方式

sqltool.class.php

<?php
    class sqltool{
        private $conn;
        private $host="localhost";
        private $user=‘root‘;
        private $password=‘‘;
        private $db=‘user‘;
        // 构造方法,初始化连接数据库及设置字符编码
         function  __construct(){
            $this->conn=mysqli_connect($this->host,$this->user,$this->password,$this->db);
            if (!$this->conn) {
                die("连接失败".mysqli_error());
            }
            mysqli_set_charset($this->conn,"utf8");
        }
        // 执行dml语句,并返回值
        function excute_dml($sql){
            $res=mysqli_query($this->conn,$sql) or die("shiai").mysqli_error();
            if (!$res) {
                return 0;
            }else{
                // mysqli_affected_rows:并影响的行数
                if (mysqli_affected_rows($this->conn)>0) {
                    return 1;
                }else{
                     return 2;
                }
            }
        }
        // 执行dql语句,并返回值
        function excute_dql($sql){
            $res=mysqli_query($this->conn,$sql) or die("shibai");
            //var_dump($res);
            return $res;
        }
    }

testsql.php

<?php
    require "sqltool.class.php";
    //$sql="insert into user1(name,password,email,age) values(‘hhhhhh‘,md5(‘123‘),‘[email protected]‘,22)";
    $sql="delete from user1 where name=‘qq‘";
    $sqltool=new sqltool();
    // 调用dml
    $res=$sqltool->excute_dml($sql);
    if ($res==0) {
         echo "执行失败<br/>";
    }else if ($res==1) {
        echo "执行成功<br/>";
    }else if ($res==2) {
        echo "没有影响到行数<br/>";
    }
    $sql1="select * from user1";
    // 调用dql
    $res1=$sqltool->excute_dql($sql1);
    //var_dump($res1);
    if ($res1->num_rows>0) {
        while ($row=mysqli_fetch_row($res1)) {
            //var_dump($row);
            //echo "<br/>";
            foreach ($row as $key => $value) {
                echo "---$value";
            }
            echo "<br/>";
        }
    }
?>
时间: 2024-10-12 20:33:46

【二十】mysqli基于面向过程与面向对象的编程的相关文章

【C/C++学院】0817-递归汉诺塔 双层递归 /CPP结构体 /面向过程与面向对象的编程模式/类的常识共用体实现一个类的特征/QT应用于类以及类的常识

递归汉诺塔 双层递归 #include <iostream> void han(int n, char A, char B, char C) { static int num = 1; std::cout << "第" << num << "次"; num++; if (n<1) { return; } else { han(n - 1, A, C, B); std::cout << A <&l

C语言学习系列-面向过程和面向对象

一.基本定义 (一).面向过程(procedure oriented programming POP) 面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可. (二).面向对象(object oriented programming OOP) 面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为. 二.通俗理解面向过程和面向对象区别 知乎上面经典的答案(一): 面向过程

面向过程和面向对象

面向过程和面向对象简介 一 .面向过程与面向对象的区别: 前者是一种谓语和宾语的关系:后者是一种主语和谓语的关系 . 二.面向对象的三个特征: 封装 继承 多态 三.类与对象: 对象又称作实例,是实际存在的该类事物的每个个体.类是对某一类事物的描述,是抽象的.概念上的 定义. 面向对象的设计的重点是类的设计. 四.对象的比较: 1 “= =”运算符与equals()方法的区别: 前者辨别实质是否相等:后者辨别长相是否相等. 五. 实现类的封装性: 1不能让外面的类随意修改一个类的成员变量: 2在

3 面向过程与面向对象进一步比较

编程范式 编程即写程序or写代码,具体是指程序员用特定的语法+数据结构+算法编写代码,目的是用来告诉计算机如何执行任务 . 如果把编程的过程比喻为练习武功,那么编程范式指的就是武林中的各种流派,而在编程的世界里最常见的两大流派便是:面向过程与面向对象. "功夫的流派没有高低之分,只有习武的人才有高低之分",在编程世界里更是这样,面向过程与面向对象在不同的场景下都各有优劣,谁好谁坏不能一概而论,下面就让我们来详细了解它们. 面向过程的程序设计 概念: 核心是"过程"二

面向过程与面向对象(一)

一.面向过程与面向对象:   面向过程: 重过程:解决问题,考虑的是解决问题的流程 解决问题的思路清晰,但拓展性不强   面向对象: 重对象:解决问题,找到解决问题的对象 解决问题的思路可能不止一条(理解解决问题的难度增加),但拓展性强 二.名称空间: 能产生名称空间的有:文件 | 函数 | 类 能产生名称空间的对象有__dict__这个值,通过该这个值访问到名字与地址的对应关系 def func(): pass func.__dict__['index'] = 10000 print(func

面向过程,面向对象,函数式对同一个问题的思考方式

我之所以对函数式代码感兴趣是因为函数式代码富有表现力,可以使用简短.紧凑的代码完成工作,同时能对特定的问题给出优雅的解决方案.现代的编程语言不约而同的朝着面向对象.函数式.动态.解释执行的方向发展,例如Ruby,Swift.而另一些语言则更加强调函数式编程,如F#,Scala,这种语言有着强大的类型推断系统,编写的代码洁程度则令人叹为观止. 在F#编写一个两个数相加的函数,在F# Interactive中输入: let add num1 num2=num1*num2;; F# Interacti

.NET 高级架构师0002 架构师之路(1)---面向过程和面向对象

1.引言     机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到.但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c.ctrl-v用得更加纯熟了.在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO:二是继续深入,它的终点是首席架构师,成为CEO的人毕

面向过程和面向对象及面向对象的三大特征

英文及缩写: 面向过程:procedure oriented programming POP 面向对象:object oriented programming OOP 面向对象和面向过程的历程: 面向过程编程采取的是时间换空间的策略,因为在早期计算机配置低,内存小,如何节省内存则成了首要任务,哪怕是运行的时间更长.随着硬件技术的发展,硬件不再成为瓶颈,相反更好的模拟现实世界.系统的可维护性等问题凸显出来,于是面向对象设计应运而生.当下:应用在PC机上的一般应用系统,由于不太需要考虑硬件的限制,而

面向过程 VS 面向对象

面向过程 VS 面向对象 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过