美文网首页PHP入门
6PHP 操作 MySQL 数据库

6PHP 操作 MySQL 数据库

作者: 哈士奇大叔 | 来源:发表于2020-04-10 12:06 被阅读0次

    [TOC]

    PHP 操作 MySQL 数据库

      1. 连接 MySQL 服务器,连接数据库
      1. 进行数据库的操作(CURD)
      1. 断开数据库,断开服务器

    1. 连接数据库

    PHP5 以上版本建议使用:

    • MySQLi extension
    • PDO(PHP Data Objects)
      MySQLi 只针对 MySQL 数据库,PDO 应用 12 种不同数据库中。
      MySQLi 使用面向对象:
    <?php
    new mysqli(hostname,username,password,dbname);
    /***
    hostname: 主机名,代表当前连接的是哪一台服务器
    username: 连接MySQL服务器所需要的账号,默认:root
    password: 连接MySQL服务器所需要的密码,默认为:""
    dbname: 连接数据库所需要的 数据库名称。
    
    
    */
    
    <?php
    $servername="localhost";
    $username="root";
    $password="";
    $dbname="shopdb";
    // 创建连接  1.实例化MySQLi对象
    $conn=new mysqli($servername,$username,$password,$dbname);
    // 检测连接
    // 2.连接失败 判断标志
    // connect_errno  --错误代码
    // connect_error
    // if($conn->connect_error){
    //     die('连接失败:'.$conn->connect_error);
    // }
    if($conn->connect_errno){
        // 如果是非0,代表连接失败
        // 显示失败信息
        die($conn->error);
    }
    // echo '连接成功';
    // 3.消除乱码 --设置编码格式  执行SQL语句
    $conn->query('set names utf8');
    
    // 4. 执行操作
    $res=$conn->query('select * from `tab_goods`');
    var_dump($res);
    $conn->close();
    
    ?>
    

    MySQLi 使用面向过程:

    <?php
    $servername="localhost";
    $username="root";
    $password="";
    $dbname="shopdb";
    
    // 创建连接
    $conn=mysqli_connect($servername,$username,$password,$dbname);
    
    // 检测连接
    if(!$conn){
        die('连接失败:'.mysqli_conncet_eroor())
    }
    echo '连接成功';
    ?>
    

    PDO 连接数据库

    
    new PDO("mysql:host=$hostname;dbname=$dbname",$username,$password)';
    /**
     * arg1: 'mysql:host=MySQL主机名;dbname=数据库名称'
     * $username: 数据库的用户名
     * $password: 数据库的密码
    */
    
    $dbms='mysql';     //数据库类型
    $servername="localhost";
    $username="root";
    $password="";
    $dbname="shopdb";
    $dsn="$dbms:host=$servername;dbname=$dbname";
    
    try{
        $conn=new PDO($dsn,$username,$password);
        echo '连接成功';
    }catch(PDOException $e){
        echo $e->getMessage();
    }
    
    

    2.执行数据库操作

    2.1 MySQLi 类库通过 query 函数执行 SQL 语句做对应的数据库操作。

    $dbms='mysql';     //数据库类型
    $hostname="localhost";
    $username="root";
    $password="";
    $dbname="demodb";
    $dsn="$dbms:host=$hostname;dbname=$dbname";
    // 创建连接
    $mysqli=new mysqli($hostname,$username,$password,$dbname);
    // 检查连接
    if($mysqli->connect_error){
        die("连接失败".$conn->connect_error);
    }
    
    // 准备SQL语句 开始执行数据库操作
    $sql="SELECT * FROM `tab_goods`";
    // 通过query函数执行SQL语句  得到结果集对象mysqli_result(不直接包含数据)
    $result=$mysqli->query($sql);
    // mysqli_result类中的成员属性
    // $current_field:获取当前结果中指向的字段偏移位置,是一个整数。
    // $field_count:从查询结果中获取列的个数。
    // $lengths:返回一个数组,保存在结果集中获取当前行的每一个列的长度。
    // $num_rows:返回结果集中包含记录的行数。
    //
    

    2.1 获取数据

    返回单条记录

    • 成员方法 fetch_array 以混合数组的形式返回单条记录 (索引数组+关联数组(key-value))
    var_dump($result->fetch_array());
    
    • 成员方法 fetch_object fetch_assoc 以对象的形式返回单条记录
    var_dump($result->fetch_object());
    var_dump($result->fetch_assoc());
    
    • 成员方法 fetch_row 以索引数组的形式返回单条记录
    var_dump($result->fetch_row());
    

    返回所有记录

    $data=$result->fetch_all(MYSQLI_ASSOC);//推荐使用
    $data=$result->fetch_all(MYSQLI_NUM);
    $data=$result->fetch_all(MYSQLI_BOTH);
    

    fetch_all 函数接受 三种不同的参数 (系统常量)

    • MYSQLI_ASSOC 返回关联数组--(与 fetch_assoc 函数返回的类型相同。)
    • MYSQLI_NUM 返回索引数组--(与 fetch_row 函数返回的类型相同。)
    • MYSQLI_BOTH 返回混合数组--(与 fetch_array 函数返回的类型相同。)

    2.1.2 新增/修改/删除数据

    通过 query 函数执行后返回的结果集进行判定。false --失败

    $dbms='mysql';     //数据库类型
    $hostname="localhost";
    $username="root";
    $password="";
    $dbname="demodb";
    $dsn="$dbms:host=$hostname;dbname=$dbname";
    // 创建连接
    $mysqli=new mysqli($hostname,$username,$password,$dbname);
    // 检查连接
    if($mysqli->connect_error){
        die("连接失败".$conn->connect_error);
    }
    $sql="insert into `tab_goods` (`name`,`price`,`description`,`count`) values('huskyuncle',2.5,'贱卖贱卖2.5甩卖了',1);";
    $sql1=sprintf("insert into `tab_goods` (`name`,`price`,`description`,`count`) values(%s,%s,%s,%s);",'aaa',23,'描述方式的发顺丰',345);
    $res=$mysqli->query($sql1);
    if($res===TRUE){
        ECHO '新纪录插入成功';
    }else {
        echo 'error';
    }
    

    2.2 PDO 类库数据库操作。

    通过 exec(),query()两个函数执行数据库操作.

    • exec() 执行一条 SQL 语句,返回后影响的行数。
    • query() 执行一条 SQL 语句,返回一个 PDOStatement 对象
    // EXEC  适用于增删改
    $dbms='mysql';
    $hostname='localhost';
    $dbname='demodb';
    $username='root';
    $password='';
    $dsn="$dbms:host=$hostname;dbname=$dbname";
    
    
    try{
        $conn=new PDO($dsn,$username,$password);
        $sql='delete from `tab_goods` where `id`=13';
        $res=$conn->exec($sql);
        var_dump($res);
    
    }catch(PDOException $e){
        echo $e->getMessage();
    }
    

    query() 函数返回 PDOStatement 对象,PDOStatement 对象提供了一系列的函数,其中有fetchAll(),用来获取结果集中的所有数据,接受常用几种参数:PDO::FETCH_BOTH(混合数组),PDO::FETCH_ASSOC(对象),PDO::NUM(索引数组);

    // QUERY  适用于查询
    $dbms='mysql';
    $hostname='localhost';
    $dbname='demodb';
    $username='root';
    $password='';
    $dsn="$dbms:host=$hostname;dbname=$dbname";
    
    
    try{
        $conn=new PDO($dsn,$username,$password);
        $sql='select * from `tab_goods`';
        $res=$conn->query($sql);
        $res->fetchAll(PDO::FETCH_ASSOC)
        var_dump($res);
    
    }catch(PDOException $e){
        echo $e->getMessage();
    }
    

    相关文章

      网友评论

        本文标题:6PHP 操作 MySQL 数据库

        本文链接:https://www.haomeiwen.com/subject/qitrmhtx.html