PHP—MySQL(PHP连接数据库)

news2024/9/23 19:16:32

目录

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

【学习目标】

【重难点知识】

二、PHP 和 MySQL 的合作方式

三、PHP连接数据库

3.1、MySQLi拓展

​编辑

3.2、建立与数据库的连接

(4)创建SQL语句

(5)获取结果

(6)获取查询结果行数

(7)增删改

(8)数据可视化。


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

【学习目标】

  1. PHP连接MySQL的方法
  2. PHP操作MySQL相关函数
  3. PHP操作MySQL详细步骤
  4. PHP操作MySQL获取结果集
  5. 获取结果数据可视化

【重难点知识】

  1. PHP操作MySQL详细步骤
  2. PHP操作MySQL获取结果集
  3. 获取结果数据可视化

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

<?php
phpinfo();

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;
    }   
}

增删改代码:

<?php
require_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>
<?php
header("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>
<?php
header("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://www.coloradmin.cn/o/2050601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32(二):GPIO

GPIO(General Purpose Input Output)通用输入输出口 1.可配置为8种输入输出模式&#xff0c;引脚电平:0V~3.3V&#xff0c;部分引脚可容忍5V&#xff0c;输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等&#xff0c;输入模式下…

在vscode使用markdown格式、自动补齐、以及快捷键

在扩展中搜索markdown all in one&#xff0c;下载使用即可。

人工智能在网络安全中的三大支柱

人工智能 (AI) 席卷了网络安全行业&#xff0c;各种供应商都在努力将 AI 融入其解决方案中。但 AI 与安全之间的关系不仅仅在于实现 AI 功能&#xff0c;还在于攻击者和防御者如何利用该技术改变现代威胁形势。它还涉及如何开发、更新和保护这些 AI 模型。如今&#xff0c;网络…

【qt】基于tcp的服务端编写

实现服务端&#xff0c;连接后拿到客户端ip地址和端口号 ui设计 修改对应行编辑对象名&#xff0c;修改客户端ip为clientip,客户端端口号为clientport 代码实现 1.网络通信需要加network 2.包含头文件 3.定义一个QTcpserver变量&#xff0c;并初始化 4.服务端监听&#…

字符串String概述,遍历字符串

String的注意点 字符串的内容是不会发生改变的&#xff0c;它的对象在创建后不能被更改 string是Java定义好的一个类&#xff0c;定义在java.long包中&#xff0c;所以使用的时候不需要导入包。 Java程序中的所有字符串文字&#xff08;例如“abcdefg”&#xff09;&#xf…

【Go语言初探】(二)、项目文件结构和GOPATH设置

一、go语言项目文件结构 由go/bin、go/src和go/pkg三个子文件夹组成&#xff0c;见下图&#xff1a; 实际项目&#xff1a; 二、gopath路径变量设置 在项目中创建main.go文件后&#xff0c;IDE会提示设置GOPATH路径&#xff1a; 点击“configure GOPATH”&#xff0c;设置GOP…

酒项目加密封装步骤;linux查看IP地址,查看MAC地址, 查看CPU序列号

线上酒项目为例 目录 线上酒项目为例 第一步 第二步 linux查看IP地址 查看MAC地址 方法1: 方法2: 方法3&#xff1a; 查看CPU序列号 为什么不用物理机的不同虚拟机的cpu序列号是相同&#xff0c;给我们的各个系统都是相同的 第一步 在maven模块分层上进行加密&#x…

15:【stm32】时钟树

时钟树 1、时钟树1.1&#xff1a;简要的介绍1.2&#xff1a;基本结构1.2.1&#xff1a;stm32的内部结构1.2.2&#xff1a;树的关键节点1.2.3&#xff1a;系统时钟的来源 2、RCC标准库编程2.1&#xff1a;片上外设的复位与释放2.2&#xff1a;时钟系统配置2.3&#xff1a;时钟树…

算法:DFS之记忆化搜索

目录 记忆化搜索 题目一&#xff1a;不同路径 题目二&#xff1a;最长递增子序列 题目三&#xff1a;猜数字大小II 题目四&#xff1a;矩阵中的最长递增路径 记忆化搜索 说到记忆化搜索&#xff0c;首先就需要引入斐波那契数这道题&#xff0c;非常经典&#xff0c;可以很…

第44课 Scratch入门篇:无限画中画

无限画中画 故事背景: 无止境的显示一幅画。 程序原理: 利用多张基本一样的图,不停循环显示,产生视觉上的错觉,原理很简单,只是一种实现方式而已。 开始编程 1、删除预设的猫咪角色,上传以后在那个无限循环的图片,大小为 480*360 2、接下来复制造型,使用选择工具…

.net 8.0 下 Blazor 通过 SignalR 与 Winform 交互

定义一个Hub using Microsoft.AspNetCore.SignalR;namespace Beatrane.Connect.Blazor {public class DeviceHub : Hub{public async Task SendMessage(string user, string message){await Clients.All.SendAsync("ReceiveMessage", user, message);}public async …

静态分析、动态调试与重打包:去除Android APK烦人广告

最近&#xff0c;一直使用的某款APP&#xff0c;广告越来越多&#xff0c;更令人发指的是&#xff0c;广告弹框最后都变成无法关闭的形式&#xff0c;不使用会员压根没法正常使用。应用市场广大用户的评论说出了我们的心声。 虽说充会员可以免广告&#xff0c;这点小钱&#xf…

《python语言程序设计》2018版第7章第7题代数2x2线性方程式设计一个名为LinearEquation

#大家可以看一下 两道题的内容 第n次刷第4章第3题的代码。朝纲用来函数的概念 def judge_num(a, b, c, d):return (a * d) - (b * c)def run_cont(a, b, c, d, e, f):cc judge_num(a, b, c, d)if cc 0:print("The equation has no solution")else:x ((e * d) - (…

苹果手机怎么清理重复照片的解决方案

随着智能手机摄像头技术的飞速发展&#xff0c;我们越来越依赖iPhone来记录生活中的点点滴滴。不可避免地&#xff0c;这也导致了大量重复照片的产生&#xff0c;这些重复照片不仅占用了宝贵的存储空间&#xff0c;还使得照片库显得混乱无序。本文将介绍苹果手机怎么清理重复照…

微信小程序开发的强大助力:HTTP 虚拟专线

​编辑 一、微信小程序开发的热潮与挑战 二、HTTP 虚拟专线的引入 三、HTTP 虚拟专线的关键功能 &#xff08;一&#xff09;用于回调 &#xff08;二&#xff09;助力运维 四、HTTP 虚拟专线的技术优势 &#xff08;一&#xff09;80 和 443 端口的灵活访问 &#xff0…

测试架构师技能修炼---关系化透明

目录 一、该信任时就给别人信任 二、你说的话长久不变 三、道歉表明你的透明化 四、学会在做出反应前倾听 五、允许别人对你透明化 它涉及与别人之间的关系应保持透明化&#xff0c;包括给别人信任&#xff1b;持续给别人传递一致的消息&#xff1b;向别人道歉&#xff1b…

[SDK]-键盘消息和鼠标消息

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解键盘消息和鼠标消息&#xff0c;下一节讲解控件的相关知识点 键盘消息 应用程序从windows接收的关于键盘事件的消息分为击键和字符两种windows再发送击键消息的同时 还会发送字符消息Shift、ctrl、alt…

【C++】string讲解

一、string的理解 我们可以把string看作一个更高级用类实现的char* 。或者直接叫他字符串类型&#xff0c;一听就是定义字符串的。 二、string的使用 用法就和int、char 类型一样&#xff0c;而且功能比他们强大很多。 三、string的功能 只列举常用功能 1、通过“[]”访问…

日撸Java三百行(day26:栈实现二叉树深度遍历之前后序遍历)

目录 一、栈实现前序遍历 二、栈实现后序遍历 三、完整的程序代码 总结 一、栈实现前序遍历 先来看看我们之前写的用递归实现前序遍历的程序代码&#xff1a; /************************ Pre-order visit.**********************/public void preOrderVisit() {System.out…

Simple RPC - 06 从零开始设计一个服务端(上)_注册中心的实现

文章目录 Pre核心内容服务端结构概述注册中心的实现1. 注册中心的架构2. 面向接口编程的设计3. 注册中心的接口设计4. SPI机制的应用 5. 小结 Pre Simple RPC - 01 框架原理及总体架构初探 Simple RPC - 02 通用高性能序列化和反序列化设计与实现 Simple RPC - 03 借助Netty…