PHP—MySQL(PHP连接数据库)

打印 上一主题 下一主题

主题 564|帖子 564|积分 1694

目录

【学习目的、重难点知识】
【学习目的】
【重难点知识】
二、PHP 和 MySQL 的合作方式
三、PHP连接数据库
3.1、MySQLi拓展
​编辑
3.2、创建与数据库的连接
(4)创建SQL语句
(5)获取结果
(6)获取查询结果行数
(7)增删改
(8)数据可视化。


【学习目的、重难点知识】

【学习目的】


  • PHP连接MySQL的方法
  • PHP操作MySQL相关函数
  • PHP操作MySQL详细步调
  • PHP操作MySQL获取结果集
  • 获取结果数据可视化
【重难点知识】


  • PHP操作MySQL详细步调
  • PHP操作MySQL获取结果集
  • 获取结果数据可视化
二、PHP 和 MySQL 的合作方式

下图展示了项目中一个模块的开发流程:将网站的内容存储在 MySQL 数据库中;然后利用 PHP 通过SQL 查询获取这些内容并以 HTML 格式输出到浏览器中表现。大概将用户在表单中输出的数据,通过在PHP 步伐中实行 SQL 查询,将数据生存在 MySQL 数据库中。也可以在 PHP 脚本中接受用户在网页上的其他相关操作,再通过 SQL 查询对数据库中存储的网站内容进行管理。

多个模块组合在一起,组成了一个完整网页。
在同一个 MySQL 数据库服务器中可以创建多个数据库,假如把每个数据库看成是一个“堆栈”,那么网站中的内容数据就存储在这个堆栈中。而对数据库中数据的存取及维护等,都是通过数据库管理体系软件进行管理的。
同一个数据库管理体系可以为差别的网站分别创建数据库,但为了使网站中的数据便于维护、备份及移植,最好为一个网站创建一个数据库(在大数据量时则采用分库分表)。数据库和数据库管理体系,以及 PHP 应用步伐之间的关系如下图所示。

三、PHP连接数据库

PHP 中提供了完整的操作 MySQL 数据库的函数,这些函数包括了从连接数据库、实行 SQL 语句、处置惩罚数据结果集到关闭数据库的方方面面。通过这些函数,使基于 MySQL 数据库的 Web 开发高效而简单。通常 PHP 访问 MySQL 数据库的步调如下图所示。

3.1、MySQLi拓展

起首需要确保PHP连接数据库的拓展文件打开了。
创建一个文件:phpinfo.php,然后访问:
  1. <?php
  2. phpinfo();
复制代码


3.2、创建与数据库的连接

在连接数据库之前先预备数据库connect:

  1. CREATE TABLE user (
  2. id int(10) unsigned NOT NULL AUTO_INCREMENT,
  3. user_name varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
  4. user_pwd char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
  5. user_age int(11) DEFAULT NULL COMMENT '年龄',
  6. user_gender tinyint(4) DEFAULT '1' COMMENT '性别: 1 男 2 女',
  7. PRIMARY KEY (id)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
  9. insert into user (user_name,user_pwd,user_age,user_gender) values ('TOM','123456',22,1);
复制代码
连接示例代码:
  1. <?php
  2. $host = 'localhost';
  3. $username = 'admin';
  4. $password = '123456';
  5. $dbname = 'connect';
  6. $port = '3306';
  7. //$host:要连接的服务器。可以是主机名或者是 IP 地址;
  8. //$username:登录所使用的 MySQL 用户名;
  9. //$password:登录所用的密码;
  10. //$dbname:执行查询时使用的默认数据库;
  11. //$port:指定连接到 MySQL 服务器的端口号;
  12. $link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库
  13. //$link = @mysqli_connect('localhost','admin','123456','connect','3306');
  14. if($link){
  15.     mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集
  16.     print_r("连接成功");
  17. }else{
  18.     die('数据库连接失败!');
  19. }
  20. ?>
复制代码
(4)创建SQL语句

乐成选择好 MySQL 数据库后,接下来就可以对所选数据库中的数据表进行查询、更改以及删除等操作,PHP 中我们利用 mysqli_query() 函数就可以实现上述的所有操作,函数的语法格式如下:
  1. mysqli_query( $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT] )
复制代码
参数阐明:


  • $link:表现由 mysqli_connect() 函数返回的数据库连接;


  • $query:要实行的 SQL 语句;


  • $resultmode:可选参数,用来修改函数的举动。可以是下列值的恣意一个:




    • MYSQLI_USE_RESULT(假如需要查询大量数据,利用这个);





    • MYSQLI_STORE_RESULT(默认值)。

提示:函数实行失败时会返回 FALSE;而通过 mysqli_query() 乐成实行 SELECT、SHOW、DESCRIBE或 EXPLAIN 查询时则会返回一个 mysqli_result 对象;其他查询实行乐成则返回 TRUE。
  1. <?php
  2. $host = 'localhost';
  3. $username = 'admin';
  4. $password = '123456';
  5. $dbname = 'connect';
  6. $port = '3306';
  7. $link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库
  8. if($link){
  9.     mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集
  10.     $sql = 'select * from user'; // 准备 SQL 语句
  11.     $result = mysqli_query($link, $sql); // 执行sql语句,获取结果集
  12.     print_r($result);
  13. }else{
  14.     echo "数据库连接失败!";
  15. }
复制代码

(5)获取结果

mysqli_query() 函数会返回一个 PHP 资源的引用指针(结果集),也就是这条 SQL 语句的查询结果。
通常我们需要对这一结果集进行处置惩罚才华得到我们想要的信息。
在 PHP 中处置惩罚数据结果集的函数紧张有以下几个:


  • mysqli_fetch_row(result):从结果集中取得一行,并以索引数组的形式返回;


  • mysqli_fetch_assoc(result):从结果集中取得一行,并以关联数组的形式返回;


  • mysqli_fetch_array(result,resulttype):从结果集中取得一行,并以关联数组、索引数组或二者兼有的形式返回;


  • mysqli_fetch_all(result,resulttype):从结果集中取得所有行,并以关联数组、索引数组或二者兼有的形式返回;

返回形式
MYSQLI_ASSOC / 1
关联数组
MYSQLI_NUM/ 2
索引数组
MYSQLI_BOTH / 3
二者兼有
示例代码:
  1. <?php
  2. $host = 'localhost';
  3. $username = 'admin';
  4. $password = '123456';
  5. $dbname = 'connect';
  6. $port = '3306';
  7. $link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库
  8. if($link){
  9.     mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集
  10.     $sql = 'select * from TABLES'; // 准备 SQL 语句
  11.     $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果集
  12.     $data = mysqli_fetch_assoc($result); // 数据清洗,从结果集中获取一行,关联数组形式
  13.     echo '<pre>';
  14.     print_r($data);
  15. }else{
  16.     die('数据库连接失败!');
  17. }
复制代码

(6)获取查询结果行数

  1. mysqli_num_rows($result)
复制代码
  1. <?php
  2. $host = 'localhost';
  3. $username = 'admin';
  4. $password = '123456';
  5. $dbname = 'connect';
  6. $port = '3306';
  7. $link = @mysqli_connect($host,$username,$password); // 连接到数据库
  8. if($link){
  9.     mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集
  10.     $sql = 'select user_name,user_age,user_gender from user'; // SQL语句
  11.     $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果
  12.     $num = mysqli_num_rows($result); //        获取查询结果的行数
  13. }else{
  14.     echo '数据库连接失败!';
  15. }
  16. echo '一共查询到 '.$num.' 条记录。';
复制代码

(7)增删改

每写一个功能点一个页面就要写一次数据库连接。。。。
先预备一个连接数据库的函数:
  1. function connect(){
  2.     $host = 'localhost';
  3.     $username = 'root';
  4.     $password = '123456';
  5.     $dbname = 'db1';
  6.     $port = '3306';
  7.     $link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库
  8.     if($link){
  9.         mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集
  10.         return $link;
  11.     }else{
  12.         echo '数据库连接失败!';
  13.         return null;
  14.     }   
  15. }
复制代码
增删改代码:
  1. <?php
  2. require_once "./connect.php";
  3. // 连接数据库
  4. $link = connect();
  5. // ~~~~~~~~~~~~~~~~~增加数据~~~~~~~~~~~~~~~~~~~~~~~~~
  6. $sql = "insert into user values(null,'小明', '123123', 22, 1)";
  7. // ~~~~~~~~~~~~~~~~~删除~~~~~~~~~~~~~~~~~~~~~~~~~
  8. $sql = "delete from user where id=4";
  9. // ~~~~~~~~~~~~~~~~~修改~~~~~~~~~~~~~~~~~~~~~~~~~
  10. $sql = "update user set user_name='小明',user_age=22 where id=2";
  11. // 执行sql
  12. $result = mysqli_query($link, $sql);
  13. var_dump($result);
复制代码
(8)数据可视化。

就是将数据展示在表格中。
直接上示例代码:
查询代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8. <?php
  9. header("Content-type:text/html;charset=utf-8");
  10. require_once "./connect.php";
  11. // 连接数据库
  12. $link = connect();
  13. if($link){
  14. $sql = 'select user_name,user_age,user_gender from user'; // SQL 语句
  15. $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果
  16. $data = mysqli_fetch_all($result,MYSQLI_ASSOC); // 从结果集中以关联数组模式获取所有数据
  17. }else{
  18. echo '数据库连接失败!';
  19. }
  20. ?>
  21. <table class="table table-striped">
  22.     <caption>用户列表</caption>
  23.     <thead>
  24.     <tr>
  25.         <th>姓名</th>
  26.         <th>年龄</th>
  27.         <th>性别</th>
  28.     </tr>
  29.     </thead>
  30.     <tbody>
  31.     <?php
  32.     foreach ($data as $value){
  33.     $html=<<<GGB
  34.     <tr>
  35.         <td>{$value['user_name']}</td>
  36.         <td>{$value['user_age']}</td>
  37.         <td>{$value['user_gender']}</td>
  38.     </tr>
  39. GGB;
  40.     echo $html;
  41. }
  42. ?>
  43.     </tbody>
  44. </table>
  45. </body>
  46. </html>
复制代码
来点格式
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Title</title>
  6.     <style>
  7.         /* 为表格设置宽度、外边距和边框 */
  8.         table {
  9.             width: 80%; /* 设定表格宽度为 80% */
  10.             margin: auto; /* 外边距设为 auto,使表格居中 */
  11.             border: 1px solid black; /* 表格边框为 1px 实线 */
  12.             border-collapse: collapse; /* 合并边框 */
  13.         }
  14.         /* 为表格单元格设置边框 */
  15.         th, td {
  16.             border: 1px solid black; /* 单元格边框为 1px 实线 */
  17.             padding: 8px; /* 内边距增加单元格的空间 */
  18.             text-align: center; /* 设置单元格中文本水平居中 */
  19.             vertical-align: middle; /* 设置单元格中文本垂直居中 */
  20.         }
  21.         /* 设置表格标题行的样式(可选) */
  22.         th {
  23.             background-color: #f2f2f2; /* 标题行背景色 */
  24.         }
  25.     </style>
  26. </head>
  27. <body>
  28. <?php
  29. header("Content-type:text/html;charset=utf-8");
  30. require_once "./connect.php";
  31. // 连接数据库
  32. $link = connect();
  33. if($link){
  34.     $sql = 'select user_name,user_age,user_gender from user'; // SQL 语句
  35.     //$sql2 = "insert into user values(null,'貂蝉', '123123', 20, 2)";
  36.     //$sql3 = "delete from user where user_age=20";
  37.     $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果
  38.     //$result2 = mysqli_query($link, $sql3); // 执行 SQL 语句,并返回结果
  39.     $data = mysqli_fetch_all($result,MYSQLI_ASSOC); // 从结果集中以关联数组模式获取所有数据
  40. }else{
  41.     echo '数据库连接失败!';
  42. }
  43. ?>
  44. <table class="table table-striped">
  45.     <caption style="padding: 10px 5px;font-size: larger">用户列表</caption>
  46.     <thead>
  47.     <tr style="border: 1px">
  48.         <th>姓名</th>
  49.         <th>年龄</th>
  50.         <th>性别</th>
  51.     </tr>
  52.     </thead>
  53.     <tbody>
  54.     <?php
  55.     foreach ($data as $value){
  56.         $sex = $value['user_gender']==1 ? '男' : '女';
  57.         $html=<<<GGB
  58.     <tr>
  59.         <td>{$value['user_name']}</td>
  60.         <td>{$value['user_age']}</td>
  61.         <td>{$sex}</td>
  62.     </tr>
  63. GGB;
  64.         echo $html;
  65.     }
  66.     ?>
  67.     </tbody>
  68. </table>
  69. </body>
  70. </html>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

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