zoukankan      html  css  js  c++  java
  • PHP mysql扩展整理,操作数据库的实现过程分析

    相关文章:PHP mysqli扩展整理,包括面向过程和面向对象的比较事务控制批量执行预处理   PHPmysqli扩展整理,包括面向过程和面向对象的比较事务控制批量执行预处理

    从某种程度上说,php就是一个数据库的客户端.

    尽管官方已经不推荐使用,php7.0甚至已经移除了mysql扩展.但是学习一下面向过程的编程思想也是不错的.

    核心步骤

    连接数据库 => 执行sql语句

    其实通过mysql扩展对数据库的操作都是围绕这两个步骤来的

    详细步骤

    详细步骤流程图如下:

    查询操作

    下面程序可以实现查询本地test数据库中class表,并将查询结果输出:

    <?php
    header("content-type:text/html;charset:utf-8");
    //第一步:连接数据库
    $conn =@mysql_connect('localhost','root','root');
    if (!$conn){
        die("连接失败,错误信息".mysql_error());
    }
    //第二步:选择数据库
    mysql_select_db("test");
    
    //第三步:设置字符集
    mysql_set_charset("utf8");
    
    //第四步:创建sql语句
    $sql = "select* from `class`";
    
    //第五步:执行sql
    if($res = mysql_query($sql)){
        while($row =mysql_fetch_assoc($res)){
            echo "<pre>";
            var_dump($row);
            echo "</pre>";
        }
    }
    //第六步:关闭结果集
    mysql_free_result
    ($res);

    //第七步:释放连接
    mysql_close
    ($conn);

    mysql_query()函数的参数如果是查询操作,执行后将返回一个指向查询结果的资源文件

      如果查询失败,将返回一个空字符串

    mysql_fetch_开头的函数一共有四个,都能够获取函数的查询结果:

    mysql_fetch_row:将查询结果以索引数组的形式返回

    mysql_fetch_assoc:返回关联数组

    mysql_fetch_array:会把索引数组和关联数组都返回

    mysql_fectch_object:返回对象的形式

    以上面代码为例

    mysql_fetch_assoc输出的结果为:

    改为mysql_fetch_row输出的结果为

     

    dml操作

     查询操作需要获取查询结果,增删改操作不需要,因此步骤上略有不同:

    <?php
    header("content-type:text/html;charset:utf-8");
    //第一步:连接数据库
    $conn =@mysql_connect('localhost','root','root');
    if (!$conn){
        die("连接失败,错误信息".mysql_error());
    }
    //第二步:选择数据库
    mysql_select_db("test");
    
    //第三步:设置字符集
    mysql_set_charset("utf8");
    
    //第四步:创建sql语句
    $sql = "delete from class where `sname`='谢尔顿李库伯'";
    
    //第五步:执行sql
    $exec =mysql_query($sql);
    if (mysql_affected_rows($conn)){
        echo '操作成功,对记录产生影响';
    }else{
        echo '操作失败'.mysql_error();
    }
    
    //不需要释放资源
    //第六步:释放连接
    mysql_close($conn);

    与查询操作不同之处:

      1.判断执行是否成功应该使用mysql_affected_rows()函数,而不是mysql_query()函数:

         dml操作都是会对数据表产生影响的,

        mysql_query()里的sql语句即使执行成功,也未必会对数据表产生影响(比如删除一个不存在的列,或者修改的结果和原结果相同)

        因此要判断操作是否成功,就要判断是否对数据库产生了影响,mysql_affected_rows()就可以实现这一功能,数据库改变时,该函数会返回ture,否则返回false

      2.不需要关闭结果集,因为本身就没有结果集

      3.mysql_query()执行的dml操作时的返回值与查询操作不同,他将返回一个Boolean类型的值,执行成功为true,执行失败为false

    插入和修改操作与删除操作基本相同,只需要修改对应的sql语句即可.

    数据库的其他操作

    除了对数据表内记录的操作,mysql扩展还能执行很多数据库操作:如showdropalter等

    以删除数据表操作为例:与dml操作相比,只需要修改sql语句和判断执行是否成功的语句即可

    <?php
    header("content-type:text/html;charset:utf-8");
    //第一步:连接数据库
    $conn =@mysql_connect('localhost','root','root');
    if (!$conn){
        die("连接失败,错误信息".mysql_error());
    }
    //第二步:选择数据库
    mysql_select_db("test");
    
    //第三步:设置字符集
    mysql_set_charset("utf8");
    
    //第四步:创建sql语句
    $sql = "drop table deletetest";
    
    //第五步:执行sql
    if (mysql_query($sql)){
        echo '操作成功';
    }else{
        echo '操作失败'.mysql_error();
    }
    
    //不需要释放资源
    //第六步:释放连接
    mysql_close($conn);
  • 相关阅读:
    LVS DR模式的简单应用
    Linux新加硬盘如何识别 分区 持续挂载
    13周作业
    12周作业
    2次月考
    10周作业
    9周作业
    8周作业
    7周作业
    6周作业
  • 原文地址:https://www.cnblogs.com/iszhangk/p/11419695.html
Copyright © 2011-2022 走看看