• 详解php与mysql的关系


    通过本章你能够学到什么?
    1、对数据库有一个更为直观的了解。
    2、利用php对数据库进行连接、创建、修改、插入等简单操作。


    这篇文章的特点
    1、在学习过程中碰到的很多问题,我都记录下来,在这篇文章中给予了解决办法。对于初学者而言能够很好 节约他们的事件,不用再像我耗费大量的时间查找资料,解决问题。
    2、有图有真相,让你能够更容易理解。
    3、绝不废话。


    第一部分:我的应用工具。

      编辑器:sublime text3.
      phpstudy:该程序包集成最新的Apache+PHP+MySQL+phpMyAdmin,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。你不需要再单独下载安装php、mysql、appche,简单方便。
    首先认识以下phpstudy:

    phpstudy应用程序logo.png
    4.png

    点击上图中的“MySQL管理器”,选择MySQL-Front
    5.png出现如下界面:
    打开之后就进入到正式的数据库界面。
    6.png
    这里只是让大家见识以下mysql,后面会讲它的具体操作。

    这一部分,我所出现的主要问题就是打开图5中的localhost时出现连接不上mysql的问题,实在没有办法才选择重装phpstudy。

    第二部分:理解php、apache 、mysql之间的关系。

    有一位顾客在一家网店上 购买了一本书,网店店主收到需求后会去找厂家拿货,店主拿到货把货发给顾客。
    流程图如下:

    实例.jpg
    我们从上图得知,顾客和店主并不直接交流,而是通过店主来交换数据,店主尽提供沟通服务。php、apache、数据库三者之间的关系就像顾客、店主和厂家之间的关系。php需要某种数据,直接把请求发送给apache服务器,apache再把这种请求反馈给数据库,数据库取出响应的数据交给apache服务器,apache服务器再发送给php。
    为什么php和数据库不能直接沟通,非得通过apache呢?
    打个比方:php和数据库就好像两个不同国籍的人,前者来自中国,后者来自美国,语言不通连沟通都成问题,更别说做生意了。恰好有这么一个人叫apache,即懂中文又懂英语,把php的需求翻译成英文后告诉数据库,数据库取出相应的货物交给apache ,apache再交给php。
        php语言与数据库数据不能相互识别,需要通过apache来进行转换.
    为什么apache不能即当服务器,又做数据库,这样少了一个环节不是更省事吗?
    这设计到一个分工合理性问题。
    如果把apache和数据库合并,就相当于apache既当店主又当厂家,会大大加深apache服务器工作量。数据少的时候apache还能够承受,数据大的时候,apache还要负担工厂仓库的运输和管理工作,最终效益说不定还会大大降低,倒不如把仓库运输和管理的工作交给工厂来做。

    第三部分:mysql数据库(database)
    世界上有很多中数据库,mysql是其中最流行的一种。
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。(mysql数据库相当于将商品分类后放到不同的仓库,每一个仓库都是一个小数据库,而工厂是一个大数据库。这样方便存取货物,如果不进行分类存放,很明显存储效率会大大降低)。

    RDBMS即关系数据库管理系统(Relational Database Management System)的特点:
    1.数据以表格的形式出现
    2.每行为各种记录名称
    3.每列为记录名称所对应的数据域
    4.许多的行和列组成一张表单
    5.若干的表单组成database

    第三部分:利用php操作mysql数据库

    1.使用php脚本连接数据库

    PHP 提供了 mysql_connect() 函数来连接数据库。该函数有5个参数,一般我们只用到前面3个。

    这里你也许会问,php可以连接数据库那appache干什么去了。
    这里说明一下,apache是一个服务器,其构筑了一个php和数据库可以沟通的环境.php和数据库这两个讲不同语言的人打电话,通过apache这个同声翻译系统进行沟通

    . server 规定要连接的服务器。可以包括端口号,例如 “hostname:port”,或者到本地套接字的路径,例如对于 localhost 的 “:/path/to/socket”。
    如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 ‘localhost:3306’。
    . user 用户名。默认值是服务器进程所有者的用户名。
    . password 密码。默认值是空密码。

    php mysql_close 用来断开与mysql数据库的联系。一般情况下脚本运行完后会自动断开联系,所以这句也可以不写。不过, mysql_close() 不会关闭由 mysql_pconnect() 建立的持久连接。
    连接数据库:

    <?php
    header("content-type:text/html;charset=utf-8");
    $servername = "127.0.0.1";//服务器主机地址
    $username = "root";//访问数据库的用户名
     $password = "root";//访问数据库的密码
     //phpstudy的mysql有一个默认用户名(root)和密码(root)
    
    // 创建连接
    $conn = mysql_connect($servername, $username,$password);
    
    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysql_connect_error());//die()输出一条消息,然后断开
    连接。
    }
    echo "连接成功";
    mysql_close($conn);//关闭连接。
    ?>

    数据库不是每一个人都可以访问,只有有权限的人才可以进行访问。下面我来演示如果mysql-front工具来添加用户。

    7.png
    添加新用户后:

    8.png
    用新用户进行访问操作:

    <?php
    header("content-type:text/html;charset=utf-8");
    $servername = "127.0.0.1";//服务器主机地址
    $username = "sunwukong";//访问数据库的用户名
     $password = "jingubang";//访问数据库的密码
     //phpstudy的mysql有一个默认用户名(root)和密码(root)
    
    // 创建连接
    $conn = mysql_connect($servername, $username,$password);
    
    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysql_connect_error());//die()输出一条消息,然后断开连接。
    }
    echo "连接成功";
    mysql_close($conn);//关闭连接。
    ?>

    连接成功。

    3、创建数据库

    php利用mysql_query(sql,connection)来创建或者删除数据库。mysql_query()把搜索查询的语句sql通过建立的连接connection发送给数据库。数据库读取之后响应相应操作。

    <?php
    header("content-type:text/html;charset=utf-8");
    $servername = "127.0.0.1";//服务器主机地址
    $username = "sunwukong";//访问数据库的用户名
     $password = "jingubang";//访问数据库的密码
     //phpstudy的mysql有一个默认用户名(root)和密码(root)
    
    // 创建连接
    $conn = mysql_connect($servername, $username,$password);
    
    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysql_connect_error());//die()输出一条消息,然后断开连接。
    }
    echo "连接成功";
    echo "</br>";
    $sql = "CREATE DATABASE zhubajie";//CREATE DATABASE是sql语言中创建数据库的语句,这里是一个创建名为“zhubajie”的数据库的字符串。
    $dingpa = mysql_query($sql,$conn);//将$sql查询语句发送给数据库。
    if (!$dingpa) {
        die("创建数据库失败:".mysql_error());
    }
    echo "创建成功";
    mysql_close($conn);//关闭连接。
    ?>

    运行后,
    9.png

    有时候你会发现,上面的php文件运行会显示下图所示的错误:

    10.png
    出现这个错误的原因是你通过$username = “sunwukong”; 用户名访问数据库时,而这个用户在mysql中被创建时是没有赋予权限的。

    11.png

    4、删除数据库

    删除数据库和创造数据库一样也是通过 mysql_query来实现。

    12.png

    5、创建数据表数据

    13.png

    我们将创建一个名为 “MyGuests” 的表,有 5 个列: “id”, “firstname”, “lastname”, “email” 和 “reg_date”:
    创建数据表MyGuests:

    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
    )
    

    在数据表中的显示如下:

    14.png

    这里要注意对象浏览器显示的表中的标题行,规定了数据的类型以及其它属性。

    14-1.png
    上图是具体的数据图表。
    下面我们来看具体的代码:

    在 PHP 早起版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。取而代之的是mysqli扩展和PDO,个人使用的是mysqli扩展。mysqli扩展是mysql扩展的延伸,使用起来两者并没有什么差别,不过前者比后者更强大。下面使用的是mysqli面向过程(它还有一种面向对象的编码方式)的编码方式操作mysql,大家可以对比一下它同上面的mysql扩展编码方式的区别。

    18.png

    19.png

    AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1
    PRIMARY KEY - 设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT 一起使用。每个表都应该有一个主键(本列为 “zhubajie_t” 列),主键必须包含唯一的值。(这里大家可能不太理解,不过到后面)

    NOT NULL - 每一行都必须含有值(不能为空),null 值是不允许的。
    DEFAULT value - 设置默认值
    UNSIGNED - 使用无符号数值类型,0 及正数
    上面三种属性同指定列的数据类型一样都可以添加给列。(这里好好理解一下)。

    6、删除表数据

    20.png

  • 相关阅读:
    堆重启_uaf_hacknote
    记一次Spring表达式注入
    绕过waf的另类木马文件攻击方法
    西湖论剑 Flagshop 分析复现
    【测开基础之计算机网络】二: 物理层_网络_TesterAllen的博客CSDN博客
    测试面试 | 某 BAT 大厂测试开发面试真题与重点解析
    谁懂这篇文,玩游戏还会卡顿?
    移动自动化测试入门,你必须了解的背景知识和工具特性
    Python 自动化测试(三): pytest 参数化测试用例构建
    接口自动化测试分层设计与实践总结
  • 原文地址:https://www.cnblogs.com/jiandanshishu/p/12953343.html
Copyright © 2020-2023  润新知