• php高级进阶系列文章--第三篇(PHP操作mysql基础知识复习)


    上一篇复习了php的基础知识,这一节主要复习Mysql的基础知识,同样,本文章对于很简单的内容就不在阐述了

    1,连接数据库,mysql已经抛弃,不再考虑,可以使用mysqli,或者pdo

    <?php 
    
    // 面向对象方式mysqli方式连接数据库
    $servername = "localhost";
    $username = "root";
    $password = "root";
    
    // 创建连接
    $conn = new mysqli($servername, $username, $password);
    if ($conn->connect_error) {
        die("连接失败".$conn->connect_error);
    } else {
        echo '连接成功';
    }
    
    // 面向过程方式连接数据库
    $conn = new mysqli($servername, $username, $password);
    if (!$conn) {
        die("连接失败".mysqli_connect_error());
    } else {
        echo '连接成功';
    }
    
    // pdo 方式连接数据库
    try{
        $conn = new pdo("mysql:host=$servername;dbname=test",$username,$password);
        echo '连接成功';
    }catch(PDOException $e){
        echo $e->getMessage();
    }
    mysqli和pdo连接库实例

    2,创建数据库,分别使用mysqli方式和pdo方式

    <?php 
    
    // 面向对象方式mysqli方式连接数据库
    $host = "localhost";
    $username = "root";
    $password = "root";
    
    // mysqli创建连接
    $conn = new mysqli($host, $username, $password);
    if ($conn->connect_error) {
        die('连接错误:'.$conn->connect_error);
    }
    $sql = "create database xuexi";
    if ($conn->query($sql) === TRUE) {
        echo 'success';
    } else {
        echo $conn->error;
    }
    
    // PDO 创建数据库
    try{
        $conn = new pdo("mysql:host=$host; dbname=xuexi",$username,$password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "create database myDBPDO";
        $conn->exec($sql);
        echo 'success';
    } catch (PDOException $e) {
        echo $sql, "<br />" . $e->getMessage();
    }
    $conn = null;
    mysqli和pdo创建数据库实例

    3,mysqli和pdo的预处理语句方式新增数据

    <?php
    /**
     * 预处理语句优点
     * 格式:INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
     * 工作原理:预处理:创建SQL语句模板同时发送到数据库,预留的值使用参数?标记
     *           数据库解析,编译,对sql语句进行查询优化,并存储结果
     *           执行,将应用绑定的值传递给参数,数据库执行语句,应用可以多次执行语句
     * 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)
     * 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句
     * 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性
     */
    
    $host = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "xuexi";
    
    $conn = new mysqli($host, $username, $password, $dbname);
    
    if ($conn->connect_error) {
        die("连接失败:".$conn->connect_error);
    }
    
    // 预处理及绑定
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
    $stmt->bind_param('sss', $firstname, $lastname, $email);
    // 此处的sss表示是三个参数都是字符串型的 i - integer(整型) d - double(双精度浮点型) s - string(字符串) b - BLOB(binary large object:二进制大对象)
    
    
    
    # 设置并执行参数
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();
    
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "mary@example.com";
    $stmt->execute();
    
    echo "新记录插入成功";
    
    $stmt->close();
    $conn->close();
    
    // pdo方式预处理
    try {
        $conn = new pdo("mysql:host = $host; dbname = $dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
            VALUES (:firstname, :lastname, :email)");
        $stmt->bindParam(':firstname', $firstname);
        $stmt->bindParam(':lastname', $lastname);
        $stmt->bindParam(':email', $email);
        // 插入行
        $firstname = "John";
        $lastname = "Doe";
        $email = "john@example.com";
        $stmt->execute();
    } catch(PDOException $e) {
        echo "Error: " . $e->getMessage();
    }
    $conn = null;
    预处理示例

    暂时先将php操作数据库的基础内容写到这儿,后续会有单独章节分别讲mysqli和pdo这两种操作数据库的形式,主要是pdo的操作方式。

    接下来是mysql的基础知识

  • 相关阅读:
    【问题 & 解决】git 克隆项目时超时
    【荐】开源Winform控件库:花木兰控件库
    virtualenv Python 项目环境搭建必备
    英文电影评论情感分析
    中华古诗词知识图谱构建之数据获取
    基于Word2vec的诗词多情感分析
    中华古诗词知识图谱之网页设计及实现(完结)
    1211诗词时空背景
    1217诗词鉴赏
    中华古诗词知识图谱之实体关系构建&导入neo4j数据库
  • 原文地址:https://www.cnblogs.com/rcltocode/p/7239250.html
Copyright © 2020-2023  润新知