当前位置:首页 » 《我的小黑屋》 » 正文

PHP—MySQL(PHP连接数据库)

8 人参与  2024年11月26日 12:01  分类 : 《我的小黑屋》  评论

点击全文阅读


目录

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

【学习目标】

【重难点知识】

二、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,然后访问:

<?phpphpinfo();

3.2、建立与数据库的连接

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

CREATE TABLE user (id int(10) unsigned NOT NULL AUTO_INCREMENT,user_name varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',user_pwd char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',user_age int(11) DEFAULT NULL COMMENT '年龄',user_gender tinyint(4) DEFAULT '1' COMMENT '性别: 1 男 2 女',PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';insert into user (user_name,user_pwd,user_age,user_gender) values ('TOM','123456',22,1);

连接示例代码:

<?php$host = 'localhost';$username = 'admin';$password = '123456';$dbname = 'connect';$port = '3306';//$host:要连接的服务器。可以是主机名或者是 IP 地址;//$username:登录所使用的 MySQL 用户名;//$password:登录所用的密码;//$dbname:执行查询时使用的默认数据库;//$port:指定连接到 MySQL 服务器的端口号;$link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库//$link = @mysqli_connect('localhost','admin','123456','connect','3306');if($link){    mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集    print_r("连接成功");}else{    die('数据库连接失败!');}?>
(4)创建SQL语句

成功选择好 MySQL 数据库后,接下来就可以对所选数据库中的数据表进行查询、更改以及删除等操作,PHP 中我们使用 mysqli_query() 函数就可以实现上述的所有操作,函数的语法格式如下:

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。

<?php$host = 'localhost';$username = 'admin';$password = '123456';$dbname = 'connect';$port = '3306';$link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库if($link){    mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集    $sql = 'select * from user'; // 准备 SQL 语句    $result = mysqli_query($link, $sql); // 执行sql语句,获取结果集    print_r($result);}else{    echo "数据库连接失败!";}

(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

二者兼有

示例代码:

<?php$host = 'localhost';$username = 'admin';$password = '123456';$dbname = 'connect';$port = '3306';$link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库if($link){    mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集    $sql = 'select * from TABLES'; // 准备 SQL 语句    $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果集    $data = mysqli_fetch_assoc($result); // 数据清洗,从结果集中获取一行,关联数组形式    echo '<pre>';    print_r($data);}else{    die('数据库连接失败!');}

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

(7)增删改

每写一个功能点一个页面就要写一次数据库连接。。。。

先准备一个连接数据库的函数:

function connect(){    $host = 'localhost';    $username = 'root';    $password = '123456';    $dbname = 'db1';    $port = '3306';    $link = @mysqli_connect($host,$username,$password,$dbname,$port); // 连接到数据库    if($link){        mysqli_set_charset($link,'UTF-8'); // 设置数据库字符集        return $link;    }else{        echo '数据库连接失败!';        return null;    }   }

增删改代码:

<?phprequire_once "./connect.php";// 连接数据库$link = connect();// ~~~~~~~~~~~~~~~~~增加数据~~~~~~~~~~~~~~~~~~~~~~~~~$sql = "insert into user values(null,'小明', '123123', 22, 1)";// ~~~~~~~~~~~~~~~~~删除~~~~~~~~~~~~~~~~~~~~~~~~~$sql = "delete from user where id=4";// ~~~~~~~~~~~~~~~~~修改~~~~~~~~~~~~~~~~~~~~~~~~~$sql = "update user set user_name='小明',user_age=22 where id=2";// 执行sql$result = mysqli_query($link, $sql);var_dump($result);
(8)数据可视化。

就是将数据展示在表格中。

直接上示例代码:

查询代码:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><?phpheader("Content-type:text/html;charset=utf-8");require_once "./connect.php";// 连接数据库$link = connect();if($link){$sql = 'select user_name,user_age,user_gender from user'; // SQL 语句$result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果$data = mysqli_fetch_all($result,MYSQLI_ASSOC); // 从结果集中以关联数组模式获取所有数据}else{echo '数据库连接失败!';}?><table class="table table-striped">    <caption>用户列表</caption>    <thead>    <tr>        <th>姓名</th>        <th>年龄</th>        <th>性别</th>    </tr>    </thead>    <tbody>    <?php    foreach ($data as $value){    $html=<<<GGB    <tr>        <td>{$value['user_name']}</td>        <td>{$value['user_age']}</td>        <td>{$value['user_gender']}</td>    </tr>GGB;    echo $html;}?>    </tbody></table></body></html>

来点格式

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <style>        /* 为表格设置宽度、外边距和边框 */        table {            width: 80%; /* 设定表格宽度为 80% */            margin: auto; /* 外边距设为 auto,使表格居中 */            border: 1px solid black; /* 表格边框为 1px 实线 */            border-collapse: collapse; /* 合并边框 */        }        /* 为表格单元格设置边框 */        th, td {            border: 1px solid black; /* 单元格边框为 1px 实线 */            padding: 8px; /* 内边距增加单元格的空间 */            text-align: center; /* 设置单元格中文本水平居中 */            vertical-align: middle; /* 设置单元格中文本垂直居中 */        }        /* 设置表格标题行的样式(可选) */        th {            background-color: #f2f2f2; /* 标题行背景色 */        }    </style></head><body><?phpheader("Content-type:text/html;charset=utf-8");require_once "./connect.php";// 连接数据库$link = connect();if($link){    $sql = 'select user_name,user_age,user_gender from user'; // SQL 语句    //$sql2 = "insert into user values(null,'貂蝉', '123123', 20, 2)";    //$sql3 = "delete from user where user_age=20";    $result = mysqli_query($link, $sql); // 执行 SQL 语句,并返回结果    //$result2 = mysqli_query($link, $sql3); // 执行 SQL 语句,并返回结果    $data = mysqli_fetch_all($result,MYSQLI_ASSOC); // 从结果集中以关联数组模式获取所有数据}else{    echo '数据库连接失败!';}?><table class="table table-striped">    <caption style="padding: 10px 5px;font-size: larger">用户列表</caption>    <thead>    <tr style="border: 1px">        <th>姓名</th>        <th>年龄</th>        <th>性别</th>    </tr>    </thead>    <tbody>    <?php    foreach ($data as $value){        $sex = $value['user_gender']==1 ? '男' : '女';        $html=<<<GGB    <tr>        <td>{$value['user_name']}</td>        <td>{$value['user_age']}</td>        <td>{$sex}</td>    </tr>GGB;        echo $html;    }    ?>    </tbody></table></body></html>

点击全文阅读


本文链接:http://zhangshiyu.com/post/192217.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1