<?php
    header(“Content-Type:text/html;charset:utf-8”);

    /*
    文件包含
    向上包含 、 向下包含
    include 生成一个警告,错误发生后脚本继续执行
    include_once 系统检测文件包含过程中是否已经包含过(一个文件只能包含一次)
    Require 生成致命错误,错误发生后脚本停止执行
    Require_once 一个文件包含一次
    /

    // 先包含文件,再使用文件的内容(向上包含)
    // include “phpinfo.php”; // 包含 phpinfo.php 文件
    // echo “$name

    “;
    // echo “$age

    “;

    // 先准备内容,然后包含另外的文件,在另外的文件中使用当前的内容(向下包含)
    // $sex = “男”;
    // $height = 175;
    // include “phpinfo.php”; // 向下包含 phpinfo.php 文件

    // include 和 include_once
    /*
    include 系统遇到一次,就会执行一次
    如果同一个文件多次加载,系统会多次执行
    /

    // include “phpinfo.php”; //24
    // include “phpinfo.php”; //24
    // include “phpinfo.php”; //24 系统会执行三次

    include_once “phpinfo.php”; // 系统只会输出一次
    include_once “phpinfo.php”;
    include_once “phpinfo.php”;

    // Require 和 include 区别
    // 本质上都是包含文件,唯一区别是:包含未有文件时报错形式不一样
    // include 错误级别低,不会阻止代码执行,而Require会阻止代码执行

    // Require “phpinfo1.php”;
    // echo “bnbcb”; //会报错,代码不会执行,因为是 Require包含的未有文件

    // include “phpinfo1.php”;
    // echo “dhshjcf”; // 会报错,但是代码依旧会执行,因为是 include包含的未有文件

    /*
    文件包含路径:绝对路径 、 相对路径
    绝对路径 : 磁盘根目录(本地绝对路径)
    Windows C:/路径/php文件
    Linux /路径/php文件
    网站根目录开始(网络绝对路径) /: 相对于网站主机名字对应的路径
    Localhost/index.php E:/server/apache/htdocs/index.php

    相对路径 : ./ 在当前文件夹 ../ 上级目录(当前文件夹的上一级文件夹)

    */

    //操作php文件常见的错误 : 编辑错误文件 被垃圾数据填满硬盘 意外删除文件
    // readfile() 读取文件并将它写入输出缓存
    // 读取“123.txt”文件并写入输出流(读取成功返回字节数)
    echo readfile(“123.txt”); // 60 统计目录下,直接写文件名
    echo “

    “;

    // fopen() 打开文件 参数1 :文件名 参数2 :文件打开方式
    // fread() 读取文件 参数1 :文件名 参数2 :规定待读取的最大字节数
    // fclose() 关闭文件 参数 :待关闭的文件名称(或 存有文件名的变量)
    $file1 = fopen(“123.txt”,”r”) or die(“Unable to open this file .”);
    echo fread($file1,filesize(“123.txt”));
    echo “

    “;
    fclose($file1);
    echo “


    “;
    /*
    文件打开模式 打开/读取/关闭
    r 只读,文件指针在文件的开头开始
    w 只写,删除文件内容或创建新文件,如果不存在,文件指针在文件开头开始
    a 只写,文件的现有内容会被保留,文件指针在文件结尾开始 ,如果文件不存在,创建新文件
    x 创建文件只写,如果文件存在,返回false
    r+ 读/写 文件指针文件开头开始
    w+ 读/写 删除内容或创建新文件,如果不存在,文件指针在文件开头开始
    a+ 读/写 文件已有数据会被保留,文件指针在文件结尾开始,如果不存在,创建新文件
    x+ 读/写 创建新文件 读/写 如果文件存在,返回false
    */

    // 读取单行文件 fgets(), 当调用fgets()函数之后,文件指针会移动到下一行
    $file1 = fopen(“123.txt”,”r”) or die(“Unable to open this file .”);
    echo fgets($file1),”

    “; // 输出第一行,指针下移
    echo fgets($file1),”

    “; // 输出第二行,指针下移
    echo fgets($file1),”

    “; // 输出第三行,指针下移
    fclose($file1); // 关闭文件
    echo “


    “;

    // feof() 函数检查是否已达到”End of File(EOF)”
    // feof() 对于遍历未知的长度数据很有用
    $file1 = fopen(“123.txt”,”r”) or die(“Unable to open thiss file .”);
    // 输出单行,直到 end of file
    while(!feof($file1)){ // 检查文件是否达到末尾,若没有就一直到末尾
    echo fgets($file1).”

    “; // 逐行输出
    }
    fclose($file1);
    echo “


    “; // 关闭文件

    /*
    fgetc() 读取文件的单个字符
    调用 fgetc() 函数后,文件指针会移动到下一个字符
    /
    $file1 = fopen(“123.txt”,”r”) or die(“Unable to open this file .”);
    while(!feof($file1)){
    echo fgetc($file1).” “; // 逐个输出字符
    }
    fclose($file1);
    echo “


    “;

    /*
    创建文件,若用fopen打开不存在的文件,就会创建文件 写入(w) 增加(a)
    如果写不进去,说明没有向硬盘写入信息的 PHP文件访问权限
    /
    // 在当前目录下创建 test.txt 文件
    $file1 = fopen(“test.txt”,”w”); //在当前目录下成功创建新文件

    /*
    fwrite() 写入文件,会覆盖原有的数据
    参数1 : 文件名 参数2 : 被写的字符串
    /
    $txt1 = “我在学习PHP\n”;
    fwrite($file1,$txt1); // 成功写入文件
    $txt2 = “学习PHP MySql\n”;
    fwrite($file1,$txt2); // 成功写入文件
    fclose($file1); // 关闭文件
    echo ““;

    $file1 = fopen(“test.txt”,”w”) or die(“Unable to open this file .”); // 重新打开 test.txt 文件
    $txt3 = “覆盖数据”;
    fwrite($file1,$txt3); // 写入新数据,会覆盖原有的数据
    fclose($file1);

    /*
    PHP连接 MySql 数据库
    MySQLi extension (“i” improved)
    PDO (PHP Data Objects)
    MySQLi(面向对象) MySQLi(面向过程) PDO
    /

    // ★★★面向对象 连接数据库
    $servername = “localhost”;
    $username = “root”;
    $password = “root”;
    // $dbname = “myDB1”;
    $dbname = “myPHP1”;
    // $dbname = “myPHP2”;

    // // 创建连接
    // $conn = new mysqli($servername,$username,$password);
    // // 检测连接
    // if($conn->connect_error){
    // die(“连接失败 : “ . $coon->connect_error); // 返回连接错误的信息
    // }else{
    // echo “连接成功

    “;
    // }
    //关闭连接
    // $conn->close();

    // ★★★面向过程 连接数据库
    // // 创建连接
    // $conn = mysqli_connect($servername,$username,$password);
    // // 检测连接
    // if(!$conn){
    // die(“连接失败 “ .mysqli_connect_error());
    // }else{
    // echo “连接成功”;
    // }
    // //关闭连接
    // mysqli_close($conn);

    // ★★★ PDO 连接数据库
    // try{
    // // 捕获异常
    // $conn = new PDO(“mysql:host = $servername”,$username,$password); // 指定 MySQL 数据库
    // echo “连接成功”;
    // }
    // catch(PDOException $e){ // PDOException 异常类
    // // 处理异常
    // echo $e->getMessage();
    // }
    // 关闭连接
    // $conn = null;

    /*
    ★★★ 面向对象
    */

    //创建连接
    // $conn = new mysqli($servername,$username,$password,$dbname);
    // if($conn->connect_error){
    // die(“连接失败 “ . $conn->connect_error);
    // }else{
    // echo “连接成功

    “;
    // }

    /*
    ★★★面向对象 创建数据库
    */
    // 创建数据库
    // $sql = “create database myDB1”;
    // if($conn->query($sql) === true){
    // echo “数据库创建成功”;
    // }else{
    // echo “数据库创建失败”. $conn->error;
    // }
    // $conn->close();

    //★★★面向对象 创建数据库表
    // $sql = “create table oop(
    // id int unsigned auto_increment primary key,
    // name varchar(10) not null,
    // email varchar(50)
    // )”;
    // if($conn->query($sql) === true){
    // echo “成功创建表 oop”;
    // }else{
    // echo “创建表错误 “ . $conn->error;
    // }

    // 插入数据
    // $sql1 = “insert into oop(name,email)values(‘ton’,’123@qq.com’);”;
    // if($conn->query($sql1) === true){
    // echo “插入数据成功

    “;
    // }else{
    // echo “Error : “ . $sql . $conn->error;
    // }

    // 插入多条数据
    // $sql0 = “insert into oop(name,email)values(‘111’,’111@qq.com’);”;
    // $sql0 = “insert into oop(name,email)values(‘222’,’222@qq.com’);”;
    // $sql0 = “insert into oop(name,email)values(‘333’,’333@qq.com’);”;
    // $sql0 = “insert into oop(name,email)values(‘333’,’333@qq.com’),(‘111’,’111@qq.com’),(‘222’,’222@qq.com’);”;
    // if($conn->multi_query($sql0) === true){
    // echo “多条数据插入成功

    “;
    // }else{
    // echo “Error : “ . $sql0. $conn->error;
    // }

    // // 读取数据
    // $sql3 = “select * from oop;”;
    // $result = $conn->query($sql3);
    // if($result->num_rows > 0){ // num_rows 判断返回的数据
    // // 输出数据
    // while($row = $result->fetch_assoc()){
    // // 多条结果,fetch_assoc()将结果放入关联数组并循环输出
    // echo “id : “ . $row[“id”] . “   name : “.$row[“name”] . “  &nbspemail : “ . $row[“email”] . “

    “;
    // }
    // }else{
    // echo “0 结果”;
    // }

    // $conn->close();

    /*
    ★★★ 面向过程
    */
    // 创建连接
    $conn = mysqli_connect($servername,$username,$password,$dbname);
    if(!$conn){
    die(“连接失败 “ .mysqli_connect_error());
    }else{
    echo “连接成功

    “;
    }

    /*
    ★★★ 面向过程 创建数据库
    */
    // $sql = “create database myPHP1”;
    // if(mysqli_query($conn,$sql)){
    // echo “创建数据库成功”;
    // }else{
    // echo “创建失败”.mysqli_error($conn);
    // }
    // mysqli_close($conn);

    //面向过程 创建数据库表
    // $sql = “create table opp(
    // id int unsigned auto_increment primary key,
    // name varchar(10),
    // email varchar(50)
    // )”;
    // if(mysqli_query($conn,$sql)){
    // echo “数据库表opp创建成功”;
    // }else{
    // die(“创建表失败 “ . mysqli_error($conn));
    // }

    // 插入数据
    // $sql2 = “insert into opp(name,email)values(‘john’,’456@qq.com’);”;
    // if(mysqli_query($conn,$sql2)){
    // echo “插入数据成功
    “;
    // }else{
    // echo “Error : “ . $sql2 .mysqli_error($conn);
    // }

    // 插入多条数据
    // $sql0 = “insert into opp(name,email)values(‘111’,’111@qq.com’);”;
    // $sql0 = “insert into opp(name,email)values(‘222’,’222@qq.com’);”;
    // $sql0 = “insert into opp(name,email)values(‘333’,’333@qq.com’);”;
    // $sql0 = “insert into opp(name,email)values(‘111’,’111@qqq.com’),(‘222’,’222@qq.com’),(‘333’,’333@qq.com’);”;
    // if(mysqli_multi_query($conn,$sql0)){
    // echo “opp多条数据插入成功

    “;
    // }else{
    // echo “Error : “ . $sql0. mysqli_error($conn);
    // }

    // 筛选某些数据
    $result = mysqli_query($conn,”select * from opp where name = ‘333’;”);
    while($row = mysqli_fetch_assoc($result)){
    echo $row[“id”] .”   &nbsp” . $row[“name”] . “    ” . $row[“email”] . “

    “;
    }

    // 修改某些数据
    mysqli_query($conn,”update opp set name = ‘132456789’ where name = ‘111’;”);

    // 删除某些数据
    mysqli_query($conn,”delete from opp where name = ‘222’;”);

    //读取数据
    $sql3 = “select * from opp”;
    $result = mysqli_query($conn,$sql3);
    if(mysqli_num_rows($result) > 0){
    // 输出数据
    while($row = mysqli_fetch_assoc($result)){
    echo “id : “ . $row[“id”] . “   name : “.$row[“name”] . “  &nbspemail : “ . $row[“email”] . “

    “;
    }
    }else{
    echo “0 结果”;
    }

    // mysqli_close($conn);

    /*
    ★★★ PDO
    */

    // try{
    // // //捕获异常 创建连接
    // $conn = new PDO(“mysql:host = $servername;dbname=$dbname”,$username,$password); // 指定MySQL数据库
    // echo “连接成功

    “;
    // // 设置PDO 错误模式为异常
    // $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

    // // 创建数据库
    // $sql = “create database myPHP2”;
    // $conn->exec($sql); // 使用exec() 因为没有结果返回
    // echo “创建数据库成功”;

    // // 创建数据库表
    // $sql1 = “create table pdo1(
    // id int unsigned auto_increment primary key,
    // name varchar(10),
    // email varchar(50)
    // )”;
    // $conn->exec($sql1); // 没有结果返回
    // echo “创建数据库表成功

    “;


    // 插入数据
    // $sql2 = “insert into pdo(name,email)values(‘ami’,’789@qq.com’);”;
    // // 使用 exec() 没有结果返回
    // $conn->exec($sql2);
    // echo “插入数据成功

    “;

    // 多条数据插入成功
    // $conn->beginTransaction(); // 开始事务
    // $conn->exec(“insert into pdo(name,email)values(‘111’,’111@qq.com’);”);
    // $conn->exec(“insert into pdo(name,email)values(‘222’,’222@qq.com’);”);
    // $conn->exec(“insert into pdo(name,email)values(‘333’,’333@qq.com’);”);

    // // 提交事务
    // $conn->commit();
    // echo “pdo 多条数据插入成功

    “;

    // prepare 预处理语句
    // $stmt = $conn->prepare(“select * from pdo;”);
    // // 执行一条预处理语句
    // $stmt->execute();
    // // fetch() 从结果中获取数据
    // while($row = $stmt->fetch()){
    // echo “id : “ . $row[“id”] . “   name : “.$row[“name”] . “  &nbspemail : “ . $row[“email”] . “

    “;
    // }
    // }

    // catch(PDOException $e){
    // $conn->rollback(); // 如果执行失败,回滚
    // echo $sql . “

    “ . $e->getMessage();
    // }
    // $conn = null;

    ?>