【PHP基础】实现PHP与SQL数据库的连接

1 前言

  1. 为实现网页访问后台数据库的功能,需要在网页代码中将其与对应的数据库进行连接。
  2. PHP 5 及以上版本建议使用以下方式连接 MySQL :
    1. MySQLi extension (“i” 意为 improved)。
    2. PDO (PHP Data Objects)。
  3. 两种连接方式的比较:
    1. PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
    2. 如果项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 如果使用 MySQLi 连接不同数据库,需要重新编写所有代码,包括查询。
    3. 两者都是面向对象, 但 MySQLi 还提供了 API 接口。
    4. 两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
  4. 本节以简单的例子介绍实现PHP与SQL连接的全过程,主要介绍 MySQLi 方法。

2 实现PHP连接SQL数据库实验全过程

2.1 实验环境

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

2.2 创建数据库

  1. 在客户端通过浏览器登录phpMyAdmin,位置位于网站默认根目录下的phpMyAdmin文件夹下,在浏览器中输入目标“IP+/phpMyAdmin”进行访问,默认账号密码均为root。
    在这里插入图片描述
  2. 登录后可以看到以下界面,左侧是默认的4个数据库。点击箭头所示的数据库,进入。
    在这里插入图片描述
  3. 新建学习测试的数据库,命名为my_test,类型选择为“utf8_genrral_ci”,点击创建。
    在这里插入图片描述
  4. 创建成功后,在左侧这里可以看到创建后的数据库。点击该数据库进入。
    在这里插入图片描述
  5. 进入后可以看到该数据库中没有任何表单。
    在这里插入图片描述
  6. 创建一个数据表,命名为users,主要用于存放用户信息(id name password photo money)共5个字段。输入以下信息并点击执行。
    在这里插入图片描述
  7. 新建这几个字段,id name password photo money,并设置响应的类型和长度,将id键设为主键。(主键要求非空递增)。
    在这里插入图片描述
  8. 可点击左侧新建完成的users表,该表详细结构信息如下图所示。
    在这里插入图片描述

2.3 插入数据

  1. 点击SQL进入表格修改界面,可利用SQL语句执行。
    在这里插入图片描述
  2. 修改命令如下并点击执行。注意符号为英文格式的。
INSERT INTO `users`( `name`, `password`,`photo`, `money`) VALUES ("libai",123456,"./touxiang.jpg",100);
INSERT INTO `users`( `name`, `password`,`photo`, `money`) VALUES ("李白",123456,"./touxiang.jpg",100);
  1. 点击左侧的users表,可以看到我们输入的用户信息。此处我们输入了libai和李白两个账户,如下图所示。
    在这里插入图片描述

2.4 实现PHP与数据库交互

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

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

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

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

<?php
$dbHost = "127.0.0.1";	//数据库地址
$dbUser = "root";		//此处直接赋值为root,实际使用应该是用户登录输入自己的账号。
$dbPass = "root";		//此处直接赋值为root,实际使用应该是用户登录输入自己的密码。
$dbName = "my_test";
$link = @mysqli_connect($$dbHost,$dbUser,$dbPass,$dbName);//建立连接,不显示notice信息
if (!$link)
	{echo mysqli_connect_error();}		//如果未能建立连接则显示错误信息。
$sql = "select * from users";			//定义要执行的语句。
$results = mysqli_query($link,$sql);	//执行语句从连接获取数据。
var_dump($results);						//查看所获取数据的类型。
//网页输出为对象类型:object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(5) ["lengths"]=> NULL ["num_rows"]=> int(2) ["type"]=> int(0) }
mysqli_close($link);					//断开连接
?>

2.4.3 代码二:优化代码一

在代码一的基础上,根据是否成功执行语句获取数据分支执行,若成功则依次打印所获取数据信息,若是被则显示错误提示。浏览器访问代码二结果如图,其中中文出现乱码。

<?php
$dbHost = "127.0.0.1";
$dbUser = "root";
$dbPass = "root";
$dbName = "my_test";
$link = @mysqli_connect($$dbHost,$dbUser,$dbPass,$dbName);
if (!$link)
	{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));
}
mysqli_close($link);
?>

在这里插入图片描述

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

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

<?php
$dbHost = "127.0.0.1";
$dbUser = "root";
$dbPass = "root";
$dbName = "my_test";
$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()
返回一个字符串描述的最后一次连接调用的错误代码
$link->close()
mysqli_close($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中数据库的操作方式;
  2. 掌握PHP与MySQL数据库连接和使用;
  3. 掌握常用命令;
  4. 了解面向对象与面向过程的连接方式的不同之处;
  5. 了解官方手册的大概内容。
  • 12
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 PHPSQLSRV 扩展来连接 SQL Server 数据库。首先需要在服务器上安装 SQLSRV 扩展,然后使用 sqlsrv_connect() 函数建立连接。具体的连接参数包括服务器地址、数据库名称、用户名和密码。 示例代码: ``` <?php $serverName = "serverName\sqlexpress"; //serverName\instanceName $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } ?> ``` ### 回答2: PHP连接SQL Server数据库需要注意一些细节。在连接前,我们需要确保SQL Server已经启用了TCP / IP协议,并在防火墙上允许了该协议。我们还需要在SQL Server中创建一个可用的登录名和密码,这个登录名有权限访问我们需要连接数据库。 接下来,我们需要安装PHPSQL Server驱动程序模块,这个模块在Windows平台中已经内置,但是需要安装在Linux平台中。我们可以在php.ini文件中启用这个模块,或在运行时使用dl()函数加载。 在PHP连接SQL Server可以使用多种方法,最简单的一种是使用PDO(PHP数据对象)类。首先,我们需要有一个DSN(数据源名称),这个DSN包含SQL Server的服务器名、数据库名、用户名和密码等信息。 接下来,我们可以使用PDO类的构造函数建立与SQL Server的连接,代码如下所示: ``` $dsn = 'sqlsrv:Server=SERVERNAME;Database=DBNAME'; $username = 'USERNAME'; $password = 'PASSWORD'; try { $conn = new PDO($dsn, $username, $password); //连接成功,执行操作 } catch (PDOException $e) { echo '无法连接SQL Server:' . $e->getMessage(); } ``` 在成功连接SQL Server后,我们就可以使用PDO对象的各种方法进行数据库操作,例如执行SQL查询语句、插入、更新、删除数据等。 需要注意的是,虽然现代的SQL Server支持Unicode编码,但在旧版本的SQL Server或使用特殊字符时,需要将编码设置为cp1252或ISO-8859-1,以避免出现乱码问题。 此外,在编写SQL语句时,应该尽量使用参数绑定,以避免SQL注入攻击。例如: ``` $stmt = $conn->prepare('SELECT * FROM users WHERE username = :username'); $stmt->bindParam(':username', $username); $stmt->execute(); ``` 总之,使用PHP连接SQL Server需要注意一些细节,但只要按照规范操作,就能够成功连接并进行数据库操作。 ### 回答3: PHP是一种流行的服务器端脚本语言,它广泛运用于Web应用程序的开发中。而SQL Server则是一个强大的关系型数据库管理系统。将两者合并起来使用,可以很好地构建Web应用程序,并处理各种形式的数据。 在PHP连接SQL Server的过程相对简单。以下是连接步骤: 第一步,打开PHP的配置文件php.ini。找到“extension=php_pdo_sqlsrv.dll”这一行,去掉分号“;”以启用SQL Server驱动。 第二步,打开PHP页面,并使用以下代码创建一个连接: ```php <?php $serverName = "servername"; $connectionInfo = array( "Database" => "databaseName", "UID" => "userName", "PWD" => "password" ); $conn = sqlsrv_connect($serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } ?> ``` 在上述代码中,需要在$serverName、$connectionInfo和$conn三个变量中分别输入SQL Server实例的名称、连接信息(包括数据库名称、用户名和密码),并调用sqlsrv_connect()函数建立连接。 第三步,通过php.ini文件中的配置,设置PHP页面返回的编码格式,以确保正确的数据交换: ```php <?php header('Content-Type: text/html; charset=utf-8'); ?> ``` 最后,通过PHP代码,执行查询语句并输出结果: ```php <?php $query = "SELECT * FROM tableName"; $stmt = sqlsrv_query( $conn, $query); if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); } while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { echo $row['column1'].", ".$row['column2']."<br />"; } ?> ``` 在上例中,需要替换$tableName、$row['column1']和$row['column2']等变量以对指定的表执行查询,并输出结果。 总之,使用PHP连接SQL Server数据库非常简单。只需要打开PHP的配置文件,创建连接并执行查询语句,即可在Web应用程序中处理各种形式的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值