PHP与MySQL

MySQL和PHP的搭配可谓天作之合,在网站建设的活动中我们已经掌握了SQL语法以及MySQL的一些知识,要让网页上的操作可以写入数据库,以及让数据呈现到网页上都离不开PHP,这节的内容我们来学习如何用PHP操作MySQL。

PHP连接数据库的方法

PHP连接数据库的方法有两种,一是使用mysqli模块,二是使用PDO模块。而使用mysqli模块又有面向对象风格面向过程风格两种方法,接下来我们会统一使用mysqli模块的面向过程风格的方法。

技术文档:mysqli(MySQL增强版)模块

技术文档:PDO(PHP数据对象)模块

mysql_connect这种方法早已经被淘汰不能使用了,但是网上还有不少教程、文章用的PHP版本落后,方法也已废弃,大家在翻阅时留意一下。

mysqli面向过程风格的语法如下,$link是自己可以随意定义的变量,hostname是数据库的服务器,username是数据库用户名,而password是数据库的密码,database是指定某个数据库。

通常为了让数据库服务器、用户名、密码等信息更加清晰可修改,我们会把数据库的这些信息定义为一个常量,这样我们就可以根据情况修改常量的信息就可以啦。

PHP连接数据库

PHP要开发的诸多功能都离不开数据库,而要操作数据库首先就要先连接上数据库,所以连接上数据库这个功能模块可以说是非常通用的,通用的代码我们就应该存放在includes文件夹里。

首先我们需要先使用SQL语句在本地数据库新建一个blog的数据库,然后使用VS Code在blog文件夹下的includes文件,新建一个数据库的连接配置文件,比如config.php文件:

然后我们使用浏览器输入localhost/hackwork-php/blog/includes/config.php打开config.php,如果config.php文件没有显示“错误:连接不上数据库”等信息,那数据库就已经连上啦。这个mysqli_connect_error()函数会根据情况返回一些连接报错信息。

如果希望可以得到数据库连接上的反馈,可以在config.php的代码里添加else{echo “数据库连接成功”}的反馈,但是由于config.php会作为一个通用文件,很多地方会引入这个文件。成功的反馈会对页面显示造成干扰。

PHP操作数据库

要操作数据库,首先我们需要连接数据库MySQL,我们可以把config.php引入到php文件当中。

PHP创建数据库

比如我们要创建一个student数据库,在数据库MySQL的活动中我们了解到它的SQL语句如下:

PHP操作数据库的函数主要是mysqli_query($conn, $sql)函数,前者是$conn是数据库的连接,$sql是SQL语句。我们来看是如何实现的,在blog文件夹下新建一个201.php,输入以下代码:

require_once 语句和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。

执行完SQL脚本之后,我们记得要关闭连接,使用mysqli_close()函数即可。打开201.php,我们到phpmyadmin或者使用命令行的方式会发现student数据库就已经创建好了。

PHP创建数据表

在blog文件夹下新建一个202.php,输入以下代码:

然后使用浏览器执行202.php,我们发现blog下面就创建好了一个users的数据表。

大家是不是发现了规律?我们只需要使用mysqli_query()就能执行之前学到的SQL代码?原来SQL这么数据库编程语言在PHP后端开发里也能派上大用场啊~

PHP操作数据记录

还有数据库、数据表、数据记录的删除、更新等代码相信大家可以根据以上案例来结合之前学的SQL语句举一反三,这里就不一一列举啦。

将数据显示出来

那我们要如何才能把数据库里面的数据给显示到网页上面呢?首选我们需要结合技术文档了解一些mysqli的函数。

技术文档:mysqli(MySQL增强版)模块

  • mysqli_num_rows():获取数据库的条数
  • mysql_free_result() :释放结果内存
  • mysqli_fetch_array() 来使用或输出所有查询的数据

因为mysqli_fetch_array() 返回的是一个关联数组,结合我们之前掌握的如何输出关联数组的值,就能把数据给显示出来了。

数据库的预处理

数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。它的优点在于:1、效率高,执行速度块,执行多条类型相同不同数据的sql,不用多次编译sql 2、安全性高,可以防止sql注入。

技术文档:PHP数据库预处理MySQLi_STMT

本节任务

  1. php