zoukankan      html  css  js  c++  java
  • PHP学习(四)

    Database

    在 php5 之前,推荐使用的方式是例如 php_mysql.dll/php_psql.dll 等原生驱动。

    比如, php_mysql.dll 的语法如下:

    // 首先,设置页面编码
    header("Content-Type: text/html; charset=UTF8");
    
    // 其次,建立数据库连接
    $conn = mysql_connect("localhost", "root", "root") or die("数据库连接失败");
    
    // 创建数据库
    if(mysql_query("create database xxx", $con)) {
        echo "创建数据库成功。";
    } else {
        echo "创建数据库失败:" . mysql_error() . "<br>";
    }
    
    // 切换到数据库
    mysql_select_db("xxx") or dir("打卡数据库失败。");
    
    // 设置 utf8 编码
    mysql_query("select names utf8");
    
    // 创建表
    $sql = "create table person
    (
      id int primary key auto_increment,
      name varchar(20) not null,
      salary float default 1500
    )
    ";
    mysql_query($sql);
    
    // 插入数据
    mysql_query("insert into person (name, salary) values ('张飞', 3333)");
    mysql_query("insert into person (name, salary) values ('关羽', 3334)");
    
    // 查询数据
    // 返回结果是:万能的数组
    $res = mysql_query("select * from person");
    
    // 显示数据,使用 foreach 循环
    echo "<table>
    ";
    foreach($res as $r) {
        echo "  <tr><td>$r[name]</td><td>$r[salary]</td></tr>
    ";
    }
    echo "
    </table>";
    
    // 最后,释放连接
    mysql_close($conn);

    因为 mysql 插件有很多问题,所以,后来出现了 php_mysqli.dll 插件,其中 i 代表 improvement(改进/升级) 的意思,对连接数据库的效率及安全性进行了大量优化。

    mysqli 插件除了完全兼容 mysql 的语法之外,还支持用 oo 的方式连接数据库:

    // 连接数据库
    $conn = new mysqli("localhost", "root", "root", "text");
    $conn -> query("set names utf8");
    
    // 查询
    $sql = $conn->query("select * from person");
    
    // 获取结果
    $res = $conn->fetch_array(MYSQLI_ASSOC);
    
    // 显示结果
    echo "<table>
    ";
    echo "<tr><td>" . $res['name'] . "</td><td>" . $res['salary'] . "</td></tr><br>";
    echo "</table>";

    虽然 mysqli 插件已经非常好用。但是…

    php 能连接的数据库可不止 mysql 啊,还有 oracle/sqlserver/postgres/sqlite 等,每个数据库都有自己的插件,都有自己的语法…所以后来,PHP 推出了自己的连接数据库的标准, 即 PDO(PHP Data Object) 接口,对数据库的连接进行了规范。所以,采用 DPO 的所有数据库,语法得到了统一:

    // 连接数据库
    $pdo = new PDO("mysql:host=localhost;dbname=test", "root", "root", "test");
    
    // 操作数据库n
    $pdo->exec("set names utf8");
    $pdo->exec("create table person ...") or die("创建失败");
    $pdo->exec("insert into  person ...") echo and ("插入成功");
    
    // query
    $st = $pdo->query("select xxx from yyy");
    $rows =  $st->fetch(PDO::FETCH_ASSOC);
    print_r($rows);
    
    // 使用 Prepare 的方式进行操作
    $stmt = $pdo->prepare("select name from person where id = :id");
    $stmt->bindParam(":id", $xxx, PDO::PARAM_INT);
    $stmt = $stmt->execute();
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    print_r($rows);
    
    // 释放链接
    $pdo = null;
  • 相关阅读:
    MVC三层架构
    Cookie
    request (请求转发)
    response 重定向
    HttpServletResponse(响应),实现文件下载,实现验证码功能
    HTTP报文格式
    基于UUID生成短ID
    一致性hash应用到redis
    spring-mysqlclient开源了
    Effection Go
  • 原文地址:https://www.cnblogs.com/Mingsnow/p/8127388.html
Copyright © 2011-2022 走看看