【PHP基础-10】实现PHP与SQL数据库之间的交互

1 引言

(1)为实现网页访问后台数据库的功能,需要在网页代码中将其与对应的数据库进行连接。

(2)PHP 5 及以上版本建议使用以下方式连接 MySQL :

  • MySQLi extension (“i” 意为 improved)。
  • PDO (PHP Data Objects)。

(3)两种连接方式的比较:

  • PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
  • 如果项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 如果使用 MySQLi 连接不同数据库,需要重新编写所有代码,包括查询。
  • 两者都是面向对象, 但 MySQLi 还提供了 API 接口。
  • 两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。

(4)本节以简单的例子介绍实现PHP与SQL连接的全过程,主要介绍 MySQLi 方法。

2 PHP与SQL数据库交互实验演示

2.1 实验环境

(1)服务端:本实验基于虚拟机win2008系统的WAMP环境进行,该环境相关配置过程参考文章《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》。
(2)客户端:使用浏览器访问与控制。
(3)服务端与客户端处于同一个局域网下,开启服务端的phpstudy并确保能从客户端浏览器访问。

2.2 创建数据库

(1)通过访问phpMyAdmin登录数据库。管理员通过浏览器登录phpMyAdmin(位置位于网站默认根目录下的phpMyAdmin文件夹下),在浏览器中输入网址服务器IP/phpMyAdmin进入mysql数据库的登录页面;输入用户名和密码并登录(默认用户名和密码均为root),点击执行后可登录mysql数据库。

在这里插入图片描述

在这里插入图片描述

(2)数据库页面。登录数据库后可以看到以下界面,左侧是默认的4个数据库。点击箭头所示的数据库,可以对数据库进行操作。
在这里插入图片描述

(3)创建数据库jrlt。按如下操作,新建数据库jrlt,类型选择为“utf8_genrral_ci”,点击创建。创建成功后,在左侧这里可以看到创建后的数据库。

在这里插入图片描述

在这里插入图片描述

(4)进入数据库。点击该数据库进入,进入后可以看到该数据库中没有任何数据表。
在这里插入图片描述

(5)创建一个数据表users(主要用于存放用户信息id、name、password、photo、money共5个字段)。按如下操作创建数据表,并点击执行。
在这里插入图片描述
(6)编辑数据表。新建数据表的列名(id name password photo money),并设置响应的类型和长度,将id键设为主键。(主键要求非空递增),并点击保存数据表。
在这里插入图片描述

(7)可点击左侧新建完成的users表,该表详细结构信息如下图所示。

在这里插入图片描述

2.3 插入数据

(1)进入数据表SQL操作界面。单击users表→单击SQL进入表格修改界面→点击需要使用的SQL预定义语句。
在这里插入图片描述
(2)修改SQL命令。修改命令如下并点击执行。注意符号为英文格式的。

INSERT INTO `users`(`name`, `password`,`photo`, `money`) VALUES ("DuZZ",123456,"c:\\photo\\touxiang.png",100);
INSERT INTO `users`( `name`, `password`, `photo`, `money`) VALUES ("GuQQ",654321,"c:\\photo\\touxiang.png",100);

(3)点击左侧的users表,可以看到我们输入的用户信息。此处我们输入了DuZZ和GuQQ两个账户,如下图所示。
在这里插入图片描述

2.4 实现PHP与数据库交互

2.4.1 实现PHP与数据库交互三步走

(1) 建立连接。用户建立连接时,需要提供用户名+密码+地址+数据库名,其中数据库名在连接过程中可以切换。
(2) 执行SQL语句。
(3) 断开连接。

2.4.2 过程化代码一:简单实现三步走

简单实现交互三步走,并根据是否成功建立连接反馈信息。访问该网页可得到结果

<?php
$dbhost="127.0.0.1";//数据库地址
$dbUser="root";     //登录数据库的用户名
$dbPass="root";     //登录数据库的密码
$dbName="jrlt";     //数据库的名称
$link=mysqli_connect($dbhost, $dbUser, $dbPass, $dbName);  //建立数据库连接
if(!$link){
    echo mysqli_connect_error();  //捕获数据库连接时的错误信息
}
$sql="select * from users";  //定义要执行的语句
$results=mysqli_query($link,$sql);  //从数据库中获取执行语句的数据
var_dump($results);//输出数据内容及类型
mysqli_close($link);
?>

代码中的函数解析如下,更多详细信息请查看官方手册《MySQL增强版扩展》。

  • mysqli_connect():与数据库建立连接 returns an object which represents the connection to a MySQL Server, 或者在失败时返回 false.
  • mysqli_connect_error():捕获与数据库建立连接时的错误信息.
  • mysqli_close($link); 断开与数据库的连接;
  • mysqli_query(mysqli $link, string $query, int $resultmode = MYSQLI_STORE_RESULT):查询失败时返回 false,通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回true。

代码执行结果如下:
在这里插入图片描述

2.4.3 过程化代码二:优化代码一

代码一输出的是对象,不方便查看。我们可以利用mysqli_fetch_assoc() 函数 以关联数组的方式获取对象中记录的数据。由于mysqli_fetch_assoc() 函数执行一次只能获取一条数据,且是依次获取。因此可以以mysqli_fetch_assoc() 函数为条件,当成功执行时则依次打印所获取的关联数组信息。具体代码如下:

<?php
$dbhost="127.0.0.1";//数据库地址
$dbUser="root";     //登录数据库的用户名
$dbPass="root";     //登录数据库的密码
$dbName="jrlt";     //数据库的名称
$link=mysqli_connect($dbhost, $dbUser, $dbPass, $dbName);  //建立数据库连接
if(!$link){
    echo mysqli_connect_error();  //捕获数据库连接时的错误信息
}
$sql="select * from users";  //定义要执行的语句
//if...else语句是为了检查sql语句是否有错误,增强代码的可检查性
if($results=mysqli_query($link,$sql)){
   while($result=mysqli_fetch_assoc($results)){  //使用mysqli_fetch_assoc函数以关联数组的方式获取一条对象中记录的数据
    var_dump($result);
    echo "<br/>";
   }
}else{
    die(mysqli_error($link));//捕获SQL语句的错误,并结束脚本运行
}
mysqli_close($link);
?>

上述代码执行结果如下:
在这里插入图片描述

2.4.4 面向对象代码三:改连接方式为面向对象

面向对象的连接方式与代码一二中的面向过程的主要区别在于,连接过程、判断过程、断开过程的差异。在数据访问和使用过程是基本一致的。

<?php
$dbHost = "127.0.0.1";
$dbUser = "root";
$dbPass = "root";
$dbName = "jrlt";
$link = @new mysqli($dbHost,$dbUser,$dbPass,$dbName);
if ($link->connect_error)	
	{echo $mysqli->connect_error;}
$sql = "select * from users";
if ($results = mysqli_query($link,$sql)){			//mysqli_query函数执行失败时返回 false,通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回true。
	while ($result = mysqli_fetch_assoc($results)){	//使用mysqli_fetch_assoc函数获取返回对象中的具体数据。
		var_dump($result);
		echo "<hr/>";
	}
}
else{
	die(mysqli_error($link));
}
$link->close();
?>

3 相关函数简介

3.1 数据库连接操作相关函数

函数名作用
new mysqli() 、mysqli_connect()连接指定数据库
$mysqli->connect_errno、mysqli_connect_errno()返回最后一次连接调用的错误代码
$mysqli->connect_error、mysqli_connect_error()返回一个字符串描述的最后一次连接调用的错误代码
l i n k − > c l o s e ( ) 、 m y s q l i c l o s e ( link->close()、mysqli_close( link>close()mysqliclose(link)断开连接,其中$link表示所建立的连接。

3.2 操作结果集对象相关函数

函数作用
mysqli_fetch_row()以索引数组的方式获取一条记录的数据
mysqli_fetch_assoc()以关联数组的方式获取一条记录的数据
mysqli_fetch_array()以索引数组或关联数组的方式获取一条记录的数据
mysqli_fetch_all()以索引数组或关联数组的方式获取全部记录的数据
mysqli_num_rows()获取结果中行的数量
mysqli_free_result()释放与一个结果集合相关的内存

3.3 更多命令

更多命令请参考官方手册《MySQL增强版扩展》。

4 归纳

(1)掌握phpstudy中通过myadmin对数据库进行操作的方法;
(2)使用PHP语句实现PHP与MySQL进行交互;
(3)掌握数据库连接及操作结果集对象的常用命令;
(4)学会查阅官方手册《MySQL增强版扩展》。

参考文章

[1] 《【PHP基础】实现PHP与SQL数据库的连接

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在开发登录界面时,PHP数据库交互是必不可少的。PHP作为一种服务器端脚本语言,具有与数据库交互的能力。下面是一个简单的登录界面PHP数据库交互步骤: 1. 创建数据库:首先需要创建一个MySQL或其他支持的数据库,并在其中创建一个表来存储用户信息。表中可以包含字段如:用户ID、用户名和密码等。 2. 创建登录界面:使用HTML和CSS创建一个登录界面,包括用户名和密码输入框以及登录按钮。 3. 创建PHP文件:创建一个名为"login.php"的PHP文件,用于处理用户输入的信息并与数据库交互。在该文件中,需要连接到数据库,并进行用户名和密码的验证。 4. 连接数据库:使用PHP提供的连接函数(如mysqli_connect)连接数据库,并指定数据库的相关信息,如主机名、用户名、密码和数据库名等。 5. 处理用户输入:在"login.php"文件中,获取用户在登录界面输入的用户名和密码,并对其进行参数过滤和检查。 6. 查询数据库:使用SQL语句在数据库中查询用户名和密码是否与数据库中的记录相匹配。可以使用SELECT语句进行查询,并通过使用限制条件来匹配输入的用户名和密码。 7. 验证用户:如果查询结果返回一条匹配记录,则说明用户输入的用户名和密码是有效的。可以使用PHP的SESSION或其他机制来进行用户身份验证,并跳转到用户个人页面或其他需要登录才能访问的页面。 8. 错误处理:如果查询结果返回不匹配的记录,说明用户输入的用户名或密码不正确。此时,需要给用户提供相应的错误提示信息,如“用户名或密码错误”。 9. 关闭数据库连接:在处理完用户登录请求后,使用PHP提供的关闭数据库连接的函数(如mysqli_close)来释放数据库资源。 以上是基本的PHP数据库交互的登录界面步骤。根据需要,还可以增加一些其他功能,如记住登录状态、找回密码、注册新用户等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值