PHP基础学习笔记5

一、连接MYSQL

  1.1 MySQLi - 面向对象

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    // 创建连接
    $conn = new mysqli($servername, $username, $password);
    // 检测连接
    if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
    }
    echo "连接成功";
  ?>
  关闭连接:$conn->close();

  1.2 MySQLi - 面向过程

   <?php
     $servername = "localhost";
     $username = "username";
     $password = "password";

      // 创建连接
      $conn = mysqli_connect($servername, $username, $password);

     // 检测连接
     if (!$conn) {
       die("Connection failed: " . mysqli_connect_error());
     }
     echo "连接成功";
   ?>

    关闭连接:mysqli_close($conn);

   1.3 PDO 

   <?php
     $servername = "localhost";
     $username = "username";
     $password = "password";

     try {
       $conn = new PDO("mysql:host=$servername;", $username, $password);
       echo "连接成功";
     }
     catch(PDOException $e)
     {
       echo $e->getMessage();
     }
   ?>

   关闭连接:$conn = null;   

 二、创建数据库

  2.1 MySQLI - 面向对象 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";

    // 创建连接
    $conn = new mysqli($servername, $username, $password);
    // 检测连接
    if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
    }

    // 创建数据库
    $sql = "CREATE DATABASE myDB";
    if ($conn->query($sql) === TRUE) {
      echo "数据库创建成功";
    } else {
      echo "Error creating database: " . $conn->error;
    }

    $conn->close();
  ?>

  2.2 MySQLi - 面向过程

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);
    // 检测连接
    if (!$conn) {
      die("连接失败: " . mysqli_connect_error());
    }

    // 创建数据库
    $sql = "CREATE DATABASE myDB";
    if (mysqli_query($conn, $sql)) {
      echo "数据库创建成功";
    } else {
      echo "Error creating database: " . mysqli_error($conn);
    }

    mysqli_close($conn);
  ?>

  2.3 PDO 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";

    try {
      $conn = new PDO("mysql:host=$servername", $username, $password);

      // 设置 PDO 错误模式为异常
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $sql = "CREATE DATABASE myDBPDO";

      // 使用 exec() ,因为没有结果返回
      $conn->exec($sql);

      echo "数据库创建成功<br>";
    }
    catch(PDOException $e)
    {
      echo $sql . "<br>" . $e->getMessage();
    }

    $conn = null;
  ?>

 

 三、创建数据库表 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDBPDO";

    try {
      $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
      // 设置 PDO 错误模式,用于抛出异常
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      // 使用 sql 创建数据表
      $sql = "CREATE TABLE MyGuests (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        firstname VARCHAR(30) NOT NULL,
        lastname VARCHAR(30) NOT NULL,
        email VARCHAR(50),
        reg_date TIMESTAMP
      )";

      // 使用 exec() ,没有结果返回
      $conn->exec($sql);
      echo "数据表 MyGuests 创建成功";
    }
    catch(PDOException $e)
    {
      echo $sql . "<br>" . $e->getMessage();
    }

    $conn = null;
  ?>

 四、插入数据

  3.1 MYSQLi - 面向对象 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // 检测连接
    if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
    }

    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";

    if ($conn->query($sql) === TRUE) {
      echo "新记录插入成功";
    } else {
      echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
  ?>

  3.2 MySQLi - 面向过程

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // 检测连接
    if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
    }

    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";

    if (mysqli_query($conn, $sql)) {
      echo "新记录插入成功";
    } else {
      echo "Error: " . $sql . "<br>" . mysqli_error($conn);
    }

    mysqli_close($conn);
  ?>

  3.3 PDO 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDBPDO";

    try {
      $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
      // 设置 PDO 错误模式,用于抛出异常
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $sql = "INSERT INTO MyGuests (firstname, lastname, email)
      VALUES ('John', 'Doe', 'john@example.com')";
      // 使用 exec() ,没有结果返回
      $conn->exec($sql);
      echo "新记录插入成功";
    }
    catch(PDOException $e)
    {
      echo $sql . "<br>" . $e->getMessage();
    }

    $conn = null;
  ?>

 五、插入多条数据

  5.1 PDO

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDBPDO";

    try {
      $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
      // set the PDO error mode to exception
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      // 开始事务
      $conn->beginTransaction();
      // SQL 语句
      $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
      VALUES ('John', 'Doe', 'john@example.com')");
      $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
      VALUES ('Mary', 'Moe', 'mary@example.com')");
      $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
      VALUES ('Julie', 'Dooley', 'julie@example.com')");

      // 提交事务
      $conn->commit();
      echo "新记录插入成功";
    }
    catch(PDOException $e)
    {
      // 如果执行失败回滚
      $conn->rollback();
      echo $sql . "<br>" . $e->getMessage();
    }

    $conn = null;
  ?>

  5.2 使用预处理语句 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // 检测连接
    if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
    } else {
      $sql = "INSERT INTO MyGuests(firstname, lastname, email) VALUES(?, ?, ?)";

      // 为 mysqli_stmt_prepare() 初始化 statement 对象
      $stmt = mysqli_stmt_init($conn);

      //预处理语句
      if (mysqli_stmt_prepare($stmt, $sql)) {
        // 绑定参数
        mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);

        // 设置参数并执行
        $firstname = 'John';
        $lastname = 'Doe';
        $email = 'john@example.com';
        mysqli_stmt_execute($stmt);

        $firstname = 'Mary';
        $lastname = 'Moe';
        $email = 'mary@example.com';
        mysqli_stmt_execute($stmt);

        $firstname = 'Julie';
        $lastname = 'Dooley';
        $email = 'julie@example.com';
        mysqli_stmt_execute($stmt);
      }
    }
  ?>

  注意:函数mysqli_stmt_bind_param()绑定参数查询并将参数传递给数据库第二个参数是"sss",s 字符告诉 mysql 参数是字符串;以下列表展示了参数的类型;

    i - 整数
    d - 双精度浮点数
    s - 字符串
    b - 布尔值

 

 六、读取数据  

  6.1 面向对象 

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
      die("连接失败: " . $conn->connect_error);
    }

    $sql = "SELECT id, firstname, lastname FROM MyGuests";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
      // 输出数据
      while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
      }
    } else {
      echo "0 结果";
    }
    $conn->close();
  ?>

  6.2 面向过程

  <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
      die("连接失败: " . mysqli_connect_error());
    }

    $sql = "SELECT id, firstname, lastname FROM MyGuests";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
      // 输出数据
      while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
      }
    } else {
      echo "0 结果";
    }

    mysqli_close($conn);
  ?>

  6.3 PDO(使用预处理)

  <?php
    echo "<table style='border: solid 1px black;'>";
    echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

    class TableRows extends RecursiveIteratorIterator {
      function __construct($it) {
        parent::__construct($it, self::LEAVES_ONLY);
      }

      function current() {
        return "<td style='150px;border:1px solid black;'>" . parent::current(). "</td>";
      }

      function beginChildren() {
        echo "<tr>";
      }  

      function endChildren() {
        echo "</tr>" . " ";
      }
    }

    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDBPDO";

    try {
      $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
      $stmt->execute();

      // 设置结果集为关联数组
      $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
      foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
        echo $v;
      }
    }
    catch(PDOException $e) {
      echo "Error: " . $e->getMessage();
    }
    $conn = null;
    echo "</table>";
  ?>

原文地址:https://www.cnblogs.com/soldierback/p/11696556.html