IE盒子

搜索
查看: 85|回复: 0

PHP从入门到精通—PHP操作MySQL数据库—PHP访问 ...

[复制链接]

3

主题

4

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-2-14 17:37:05 | 显示全部楼层 |阅读模式
学习完上一章对MySQL数据库基础有一个基本的了解,任何一种编程语言都需要对数据库进行操作,PHP语言也不例外。现在流行的数据库有很多,如MySQL、Oracle、SQL Server、Sybase等。在各种数据库中,MySQL由于其免费、跨平台、使用方便、访问效率较高等优点而获得了广泛应用,很多中型网站都使用PHP+MySQL进行开发。本章将开始学习使用PHP操作MySQL数据库的各种函数和技巧。


PHP操作MySQL数据库
Ø PHP访问MySQL数据库的一般步骤
MySQL是一款广受欢迎的数据库,由于它是开源的半商业软件,所以市场占有率高,备受PHP开发者的青睐,一直被认为是PHP的最佳组合。同时,PHP也具有强大的数据库支持能力,本节主要讲解PHP访问MySQL数据库的一般步骤。
PHP访问MySQL数据库的一般步骤如图所示。


从图中可以看出,通过Web访问数据库的工作过程一般分为以下几个步骤。
(1)用户使用浏览器对某个页面发出HTTP请求。
(2)服务器端接收请求并发送给PHP程序进行处理。
(3)PHP程序中包含连接MySQL以及请求MySQL中特定数据库的SQL命令。根据这些代码,PHP程序打开一个和MySQL的连接,并且发送SQL命令到MySQL。
(4)MySQL接收到SQL命令之后加以执行并将执行结果返回到PHP程序。
(5)PHP程序根据MySQL返回的数据生成特定格式的HTML文件,并把HTML文件响应给浏览器,浏览器渲染HTML文件并展示给用户。
PHP操作MySQL数据库的方法
PHP和MySQL数据库是开发动态网站的最佳组合,本节将具体讲述PHP如何访问MySQL数据库。
Ø 数据准备
首先使用命令提示符窗口创建一个名称为section15的数据库,SQL语句如下所示。
CREATE DATABASE section15;
接着将当前使用的数据库切换为section15,SQL语句如下所示。
USE section15;
然后创建一张名称为student的数据表,SQL语句如下所示。
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
   `id` INT(4) NOT NULL  AUTO_INCREMENT,
   `name` VARCHAR(24) DEFAULT NULL,
   `age` VARCHAR(24) DEFAULT NULL,
  `course` VARCHAR(24) DEFAULT NULL,
    PRIMARY KEY (`id`)
)  DEFAULT CHARSET=utf8;
向student表中插入数据,SQL语句如下所示。
INSERT INTO student(`name`,`age`,`course`)
VALUES('Zhangsan','21','PHP');
INSERT INTO student(`name`,`age`,`course`) VALUES('LiSi','20','Java');
INSERT INTO student(`name`,`age`,`course`) VALUES('WangWu','19','PHP');
Ø 连接数据库
PHP使用mysqli_connect()函数与MySQL数据库建立连接,该函数语法格式如下:


其中,参数$server指MySQL服务器的主机名(或IP地址),如果省略端口号,默认为3306;$username指登录MySQL数据库服务器的用户名;$password指MySQL服务器的用户密码。如果连接成功,则函数返回一个资源,为以后执行SQL指令作准备。
如果想提高安全性,避免错误信息的输出,可以在函数mysqli_connect()前面加上“@”符号屏蔽错误信息,然后结合函数die()进行屏蔽的错误处理机制。
Ø 选择数据库
在连接MySQL数据库服务器之后,使用mysqli_select_db()函数选择数据库,该函数的语法格式如下:
boolean  mysqli_select_db( resource $link_identifier , string $db_name );
其中,$link_identifier表示MySQL服务器连接标识;$db_name表示传入MySQL服务器的数据库名称。如果没有指定连接标识符link_identifier,则使用上一个打开的连接。函数如果执行成功则返回TURE,失败则返回FALSE。
Ø 执行SQL语句
在选择数据表之后,使用mysqli_query()函数执行SQL语句,该函数的语法格式如下:
boolean  mysqli_query( resource $link_identifier , string $sql );
其中,$link_identifier表示MySQL服务器连接标识;$sql表示传入的SQL语句。该函数是执行SQL指令的专门函数,所有的SQL语句都通过它执行,并返回结果集。此处需要注意的是,在mysqli_query()函数中执行的SQL语句不应以分号“;”结尾。
Ø 关闭数据库连接
为了节省资源、提升性能,数据库连接在使用之后要及时关闭。关闭数据库连接要使用mysqli_close()函数,一个服务器连接也是一个对象型的数据类型,函数mysqli_close()的语法格式如下:
bool  mysqli_close( resource $link_identifier );
其中,参数$link_ identifier表示先前打开的数据库连接,如果关闭成功返回TRUE,失败返回FALSE。
Ø 从数组结果集中获取信息
在15.2.4节中讲解了mysqli_query()函数执行sql语句,接下来使用mysqli_fetch_array()函数从结果集中获取信息,该函数的语法格式如下:
array mysqli_fetch_array( resource $result [,int result_type] );
其中,参数$result为资源类型,表示要传入的是由mysqli_query()函数返回的数据指针;参数result_type为可选项,表示要传入的是MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引)、MYSQLI_BOTH(同时包含关联和数字索引的数组)3种索引类型,默认值为MYSQLI_BOTH。
Ø 获取结果集中一行记录作为对象
使用mysqli_fetch_object()函数从结果中获取一行记录作为对象,该函数的语法格式如下:
object mysqli_fetch_object( resource $result  );
mysqli_fetch_object()和mysqli_fetch_array()函数功能类似,但存在一点区别,即前者返回的是一个对象而不是数组,该函数只能通过字段名来访问数组。
Ø 逐行获取结果集中的每条记录
使用mysqli_fetch_row()函数逐行获取结果集中的每条记录,该函数的语法格式如下:
array mysqli_fetch_row( resource $result  );
mysqli_fetch_row()函数从结果集中获取一行数据并作为数组返回,每个结果的列存储在一个数组元素中,下标从0开始,即以$row[0]的形式访问第一个数组元素(只有一个元素时也是如此),依次调用该函数,将返回结果集中的下一行,直到没有更多行则返回FALSE。
Ø 获取查询结果集中的记录数
要获取由select语句查询到的结果集中行的数目,则必须使用mysqli_num_rows()函数,该函数语法格式如下:
int  mysqli_num_rows( resource $result );
其中,参数$resullt代表查询结果对象,需要注意的是,该函数只对select语句有效。
Ø 获取结果集中的记录作为关联数组
使用mysqli_fetch_assoc()函数可以获取结果集中的记录数作为关联数组,该函数的语法格式如下:
array  mysqli_fetch_assoc( resource $result );
该函数只有一个参数$result,指执行SQL命令返回的结果集对象。该函数与mysqli_fetch_rows()函数的不同之处就是返回的每一条记录都是关联数组。
PHP操作MySQL实战演练
Ø 数据准备
创建一张名称为stu的数据表,SQL语句如下所示。
DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu`(
`id` int(4) NOT NULL AUTO_INCREMENT,
`stu_name` VARCHAR(50) NOT NULL,
`stu_telephone` VARCHAR(50) NOT NULL,
`stu_sex` VARCHAR(50) NOT NULL,
`stu_age` VARCHAR(50) NOT NULL,
`stu_introduce` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
Ø 使用insert语句动态添加学生信息
接下来演示使用insert语句动态添加学生信息,具体步骤如书中例15.12和例15.13所示。
【例15.12】创建15-12.html添加学生信息表单页面。
运行结果如图所示。


在例中,第7行使用“<title></title>”标签定义文件标题;第8~12行使用“<link>”标签链接CSS样式文件;第18~72行使用“<form></form>”标签定义一个表单,其提交服务器地址为action=“./15-13.php”,提交方式为method=“post”,设置JavaScript点击事件onsubmit= “return beforeSubmit()”,该事件会在表单中的确认按钮被点击时发生;第23行使用“<input />”标签定义单行文本输入框,其name属性值“stu_name”必须与数据表“stu”字段名“stu_name”保持一致,否则将导致数据插入失败;第42行、第52行与第23行类似,此处不再赘述。
【例15.13】创建15-13.php文件,处理表单提交的信息。
运行结果如图所示。


此时使用WAMP中集成的数据库可视化工具phpMyAdmin查看数据库,具体如图所示。


在例中,第2、3行使用函数mysqli_connect()连接数据库;第4行使用函数mysqli_set_charset ()设置字符编码;第5~8行使用PHP预定义超全局数组$_POST[ ]接收前台提交的表单数据;第15~17行编写SQL查询语句;第18行使用函数mysqli_query()发送sql语句;第20~28行输出提示信息;第29行使用函数mysqli_close()关闭数据库。

Ø 使用select语句查询用户信息
实现添加用户信息后,即可对用户信息执行查询操作,接下来演示实现查询用户信息的功能,如书中例15.14所示。
【例15.14】 创建15-14.php文件,查询(所有)用户信息。
在例中,第9~40行定义“<table><tr><td> ......</td></tr></table>”表格;第19~26行嵌套PHP代码;第20行使用函数mysqli_connect()连接数据库,$link表示函数执行成功后获得资源集;第22行使用函数mysqli_set_charset ()设置字符编码;第23行编写SQL查询语句;第24行使用函数mysqli_query()发送SQL指令;第25行使用while()循环和函数mysql_fetch_assoc()获取查询结果集中的记录作为关联数组,并逐行输出stu数据表中每条记录信息;第37行使用函数mysqli_free_result()关闭结果集;第38行使用函数mysqli_close()关闭数据库资源。
【例15.15】创建15-15.php文件,展示按指定条件搜索用户信息。
【例15.16】创建15-16.php文件,处理指定条件搜索用户信息。

Ø 使用update语句动态编辑用户信息
接下来演示使用update语句动态编辑学生信息,具体步骤如书中例15.17、例15.18和例15.19所示。
【例15.17】创建15-17.php文件,展示表单编辑页面。
当用户点击“编辑”按钮,跳转至编辑表单的页面,编辑表单的页面如书中例15.18所示。
【例15.18】 创建15-18.php文件,携带用户数据信息的表单编辑页面。
编辑完成后点击“确认修改”按钮,表单信息被提交至15-19.php,具体代码如例15.19所示。
【例15.19】创建15-19.php文件,处理表单编辑脚本。

Ø 使用delete语句动态删除用户信息
删除用户信息,其实现思路非常简单,即先得到用户ID,再编写SQL语句,最后使用函数mysqli_query($sql)执行该条语句。
删除用户信息,其实现思路非常简单,即先得到用户ID,再编写SQL语句,最后使用函数mysqli_query($sql)执行该条语句。
接下来,演示使用delete语句动态删除用户信息,如例15.20和例15.21所示。
【例15.20】创建15-20.php文件,展示表单删除页面。
点击“确定”按钮,删除信息的请求被提交至15-21.php,具体代码如书中例15.21所示。
【例15.21】创建15-21.php文件,处理表单删除的操作。

小结:PHP从入门到精通—PHP操作MySQL数据库—PHP访问MySQL数据库的一般步骤、PHP操作MySQL数据库的方法、PHP操作MySQL实战演练
本文首先介绍了PHP访问MySQL数据库的一般步骤,然后讲解了PHP操作MySQL数据库的方法,即如何在PHP中连接并使用MySQL数据库,如何使用PHP提供的数据库函数管理数据库中的数据,并进行增加、删除、修改、查询操作。接着介绍查询的实际应用,包括各种查询使用的方法和实现方式。通过本章的学习,大家应该熟练掌握使用PHP函数操作MySQL数据库的方法。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表