✅ 操作成功!

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

发布时间:2023-06-18 作者:admin 来源:文学

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

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

目录
  • 1 前言
  • 2 实现PHP连接SQL数据库实验全过程
    • 2.1 实验环境
    • 2.2 创建数据库
    • 2.3 插入数据
    • 2.4 实现PHP与数据库交互
      • 2.4.1 实现PHP与数据库交互三步走
      • 2.4.2 代码一:简单实现三步走
      • 2.4.3 代码二:优化代码一
      • 2.4.4 代码三:改连接方式为面向对象
  • 3 相关函数简介
    • 3.1 数据库连接操作相关函数
    • 3.2 操作结果集对象相关函数
    • 3.3 更多命令
  • 4 总结

1 前言
  • 为实现网页访问后台数据库的功能,需要在网页代码中将其与对应的数据库进行连接。
  • PHP 5 及以上版本建议使用以下方式连接 MySQL :
  • MySQLi extension (“i” 意为 improved)。
  • PDO (PHP Data Objects)。
  • 两种连接方式的比较:
  • PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。
  • 如果项目需要在多种数据库中切换,建议使用 PDO ,这样你只需要修改连接字符串和部分查询语句即可。 如果使用 MySQLi 连接不同数据库,需要重新编写所有代码,包括查询。
  • 两者都是面向对象, 但 MySQLi 还提供了 API 接口。
  • 两者都支持预处理语句。 预处理语句可以防止 SQL 注入,对于 web 项目的安全性是非常重要的。
  • 本节以简单的例子介绍实现PHP与SQL连接的全过程,主要介绍 MySQLi 方法。
  • 2 实现PHP连接SQL数据库实验全过程 2.1 实验环境
  • 服务端:本实验基于虚拟机win2008系统的WAMP环境进行,该环境相关配置过程参考文章《win2008R2SP1+WAMP环境部署》。
  • 客户端:使用浏览器访问与控制。
  • 服务端与客户端处于同一个局域网下,开启服务端的phpstudy并确保能从客户端浏览器访问。
  • 2.2 创建数据库
  • 在客户端通过浏览器登录phpMyAdmin,位置位于网站默认根目录下的phpMyAdmin文件夹下,在浏览器中输入目标“IP+/phpMyAdmin”进行访问,默认账号密码均为root。
  • 登录后可以看到以下界面,左侧是默认的4个数据库。点击箭头所示的数据库,进入。
  • 新建学习测试的数据库,命名为my_test,类型选择为“utf8_genrral_ci”,点击创建。
  • 创建成功后,在左侧这里可以看到创建后的数据库。点击该数据库进入。
  • 进入后可以看到该数据库中没有任何表单。
  • 创建一个数据表,命名为users,主要用于存放用户信(id name password photo money)共5个字段。输入以下信并点击执行。
  • 新建这几个字段,id name password photo money,并设置响应的类型和长度,将id键设为主键。(主键要求非空递增)。
  • 可点击左侧新建完成的users表,该表详细结构信如下图所示。
  • 2.3 插入数据
  • 点击SQL进入表格修改界面,可利用SQL语句执行。
  • 修改命令如下并点击执行。注意符号为英文格式的。
  • 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);
  • 点击左侧的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_errnomysqli_connect_errno()返回最后一次连接调用的错误代码
    $mysqli->connect_errormysqli_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 总结
  • 掌握phpstudy中数据库的操作方式;
  • 掌握PHP与MySQL数据库连接和使用;
  • 掌握常用命令;
  • 了解面向对象与面向过程的连接方式的不同之处;
  • 了解官方手册的大概内容。
  • 👁️ 阅读量:0