【PHP网页应用】MySQL数据库增删改查 基础版

使用PHP编写一个简单的网页,实现对MySQL数据库的增删改和展示操作

页面实现在index.php,其中basic.php为没有css美化的原始人版本

函数实现在database.php

目录

功能基本实现版

 CSS美化版

basicindex.php 

index.php 

 database.php

代码讲解

功能基本实现版

 CSS美化版

我们来展示一下页面和操作示例。

运行网页,可以看到页面展示出了数据库的名字,还有数据库下的表。

我们点击其中一个表,可以看到表名和表的数据以及可以点击操作的按钮。

然后我们输入新的数据准备添加。

点击添加,可以看到添加成功的提示。

可以看到新添加的数据。

然后我们尝试修改数据,将visits_made改成2,点击更新。

可以看到visits_made已经变成2了。

然后我们删除这一行数据,点击删除。

可以看到我们刚刚添加的一行数据没了。

basicindex.php 

<?php
include 'database.php';
global $primaryKey;
$tableNames=getTableNames();
echo '<h1>数据库表名</h1>';
foreach ($tableNames as $name){echo '<a href="?table=' . $name . '">' . $name . '</a><br>';
}
if (isset($_GET['table'])) {$tableName = $_GET['table'];setPrimaryKey($tableName);if (isset($_POST['add'])) {// 添加数据$data = $_POST;unset($data['add']);insertRecord($tableName, $data);} elseif (isset($_POST['delete'])) {// 删除数据$id = $_POST['id'];deleteRecord($tableName, $id);} elseif (isset($_POST['update'])) {// 修改数据$id = $_POST['id'];$data = $_POST;unset($data['update'], $data['id']);updateRecord($tableName, $id, $data);}$tableData = getTableData($tableName);
} else {$tableNames = getTableNames();
}
?><!DOCTYPE html>
<html>
<head><title>MySQL 数据库操作</title>
</head>
<body>
<?php if (isset($tableData)) { ?><h1><?php echo $tableName; ?></h1><table><tr><?php foreach (array_keys($tableData[0]) as $key) { ?><th><?php echo $key; ?></th><?php } ?><th>操作</th></tr><?php foreach ($tableData as $row) { ?><form method="post"><tr><?php foreach ($row as $key => $value) { ?><td><input type="text" name="<?php echo $key; ?>" value="<?php echo $value; ?>"></td><?php } ?><td><input type="hidden" name="id" value="<?php echo $row[$primaryKey]; ?>"><input type="submit" name="update" value="更新"><input type="submit" name="delete" value="删除"></td></tr></form><?php } ?><form method="post"><tr><?php foreach (array_keys($tableData[0]) as $key) { ?><td><input type="text" name="<?php echo $key; ?>" placeholder="<?php echo $key; ?>"></td><?php } ?><td><input type="submit" name="add" value="添加"></td></tr></form></table>
<?php }?>
</body>
</html>

index.php 

<?php
include 'database.php';
global $primaryKey;
global $database;
$tableNames = getTableNames();
if (isset($_GET['table'])) {$tableName = $_GET['table'];setPrimaryKey($tableName);if (isset($_POST['add'])) {// 添加数据$data = $_POST;unset($data['add']);echo '<script>alert("'.insertRecord($tableName, $data).'")</script>';} elseif (isset($_POST['delete'])) {// 删除数据$key = $_POST['key'];echo '<script>alert("'.deleteRecord($tableName, $key).'")</script>';} elseif (isset($_POST['update'])) {// 修改数据$key = $_POST['key'];$data = $_POST;unset($data['update'], $data['key']);echo '<script>alert("'.updateRecord($tableName, $key, $data).'")</script>';}$tableData = getTableData($tableName);
}
?><!DOCTYPE html>
<html>
<head><title>数据库管理系统</title><style>body {font-family: Arial, sans-serif;margin: 0;padding: 0;background-color: #f5f5f5;}h2 {background-color: #333;color: #fff;text-align: center;padding: 10px;}table {border-collapse: collapse;width: 80%;margin: auto;background-color: #fff;}th, td {padding: 10px;text-align: center;}th {background-color: #333;color: #fff;}tr:nth-child(even) {background-color: #f2f2f2;}tr:hover {background-color: #ddd;}form {display: inline;}input {text-align: center;}input[type="text"] {width: 100%;padding: 5px;}input[type="submit"] {background-color: #333;color: #fff;border: none;padding: 5px 10px;cursor: pointer;}input[type="submit"]:hover {background-color: #555;}</style>
</head>
<body>
<h2>Database <?php echo $database ?></h2>
<table><?php foreach ($tableNames as $name) { ?><tr><td><?php echo '<a href="?table=' . $name . '">' . $name . '</a>'; ?></td></tr><?php } ?>
</table>
<?php if (isset($tableData)) { ?><h2 colspan=100%><?php echo 'Table ' . $tableName; ?></h2><table><tr><?php foreach (getTableHeader($tableName)as $key) { ?><th><?php echo $key; ?></th><?php } ?><th>操作</th></tr><?php if (!empty($tableData)) { ?><?php foreach ($tableData as $row) { ?><form method="post"><tr><?php foreach ($row as $key => $value) { ?><td><input type="text" name="<?php echo $key; ?>" value="<?php echo $value; ?>"></td><?php } ?><td><input type="hidden" name="key" value="<?php echo $row[$primaryKey]; ?>"><input type="submit" name="update" value="更新"><input type="submit" name="delete" value="删除"></td></tr></form><?php } ?><?php } ?><form method="post"><tr><?php foreach (getTableHeader($tableName) as $key) { ?><td><input type="text" name="<?php echo $key; ?>" placeholder="<?php echo $key; ?>"></td><?php } ?><td><input type="submit" name="add" value="添加"></td></tr></form></table>
<?php } ?>
</body>
</html>

 database.php

<?php
$host = "localhost"; // 数据库主机
$username = "root"; // 数据库用户名
$password = ""; // 数据库密码
$database = "taobao"; // 数据库名称
$conn = new mysqli($host, $username, $password, $database);
$primaryKey = "";
if ($conn->connect_error) {  //数据库连接失败弹出提示echo '<script>alert("数据库连接失败")</script>';die(); //终止代码
}function setPrimaryKey($tableName)
{global $conn;global $primaryKey;$sql = "show index from $tableName";$result = mysqli_query($conn, $sql);$row = mysqli_fetch_assoc($result);$primaryKey = $row['Column_name'];
}function getTableNames()
{global $conn;$sql = "show tables";$result = $conn->query($sql);$tableNames = array();if ($result->num_rows > 0) {while ($row = $result->fetch_assoc()) {$tableNames[] = $row['Tables_in_' . $GLOBALS['database']];}}return $tableNames;
}function getTableData($tableName)
{global $conn;$sql = "select*from $tableName";$result = $conn->query($sql);$tableData = array();if ($result->num_rows > 0) {while ($row = $result->fetch_assoc()) {$tableData[] = $row;}}return $tableData;
}function insertRecord($tableName, $data)
{global $conn;$keys = implode(', ', array_keys($data)); // 连成字符串$values = "'" . implode("', '", array_values($data)) . "'";$sql = "insert into $tableName ($keys) values ($values)";$result = $conn->query($sql);if ($result == 1)return '添加成功';elsereturn '添加失败';
}function deleteRecord($tableName, $key)
{global $conn;global $primaryKey;$sql = "delete from $tableName where $primaryKey = '$key'";$result = $conn->query($sql);if ($result == 1)return '删除成功';elsereturn '删除失败';
}function updateRecord($tableName, $pkey, $data)
{global $conn;global $primaryKey;$set = "";foreach ($data as $key => $value) {$set .= "$key = '$value', ";}$set = rtrim($set, ', '); // 移除最后一个字符','$sql = "update $tableName set $set where $primaryKey = '$pkey'";$result = $conn->query($sql);if ($result == 1)return '修改成功';elsereturn '修改失败';
}function getTableHeader($tableName)
{global $conn;$sql = "describe $tableName";$result = $conn->query($sql);$tableHeader = array();if ($result) {while ($row = $result->fetch_assoc()) {$tableHeader[] = $row['Field'];}}return $tableHeader;
}?>

代码讲解

这次写了两个php文件,一个database.php和一个index.php,database.php实现数据库连接以及增删改等等函数的实现,index.php实现网页页面以及功能逻辑。

然后连接MySQL的数据库,并在连接失败的时候弹出提示窗口。

当我们忘记打开数据库的时候就会连接失败,可以看到提示弹窗。

写一个函数来获取数据库中所有的表名,使用MySQL的show tables命令。

写一个函数用来获取表的数据,根据表名使用MySQL的select*from命令获取表的数据。

因为删掉和修改的时候需要知道和找出要删除修改哪一行的数据,所以我们需要找到一个表数据的唯一标识,所以我们写了一个函数来寻找表的主码,使用MySQL的show index。

实现数据库插入操作,将传入的表单数据中提取出属性名key和对应的属性值value,用MySQL的插入语句完成插入操作,并判断插入操作的结果是否成功,返回插入的结果。

实现数据库的删除操作,根据传入的表名和主键值用MySQL的删除语句完成删除操作,同样判断操作的结果是否成功,返回删除的结果。

实现数据库的修改操作,根据传入的表名和主键值以及修改后的表单使用MySQL的update语句完成修改操作,同样判断操作的结果是否成功,返回修改的结果。

最后是一个获取表属性名的函数,用来展示表的属性,用的是describe语句。

接下来看index.php文件。

页面展示用的是HTML内嵌php的代码,首先展示数据库中的表名,设计成可以点击的链接,通过点击可以给URL设置要展示的表。

然后是表名以及表的属性名的展示,后者通过调用我们之前写的函数取到。

然后判断这个表是否为空,不为空的话,就展示表的数据,并在右侧一栏显示修改和删除的操作,用户可以通过直接在展示的数据中修改并点击更新完成修改操作,可以通过点击删除完成删除的操作。

然后在最后一行显示添加的功能,用户可以在相应的属性上输入值并点击添加来添加数据。

还有一个逻辑判断,即通过判断用户点击了什么操作来调用相应的操作函数来处理,并通过弹出提示窗口来展示操作的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/186769.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年9月少儿编程 中国电子学会图形化编程等级考试Scratch编程二级真题解析(选择题)

2023年9月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、点击绿旗,运行程序后,舞台上的图形是 A、画笔粗细为4的三角形 B、画笔粗细为5的六边形 C、画笔粗细为4的六角形 D、画笔粗细为5的三角形 答案:D 考点分析:考查积木综合使用,重点考查画笔…

数字滤波器分析---频率响应

数字滤波器分析---频率响应 幅值、相位、冲激和阶跃响应、相位和群延迟、零极点分析。 分析滤波器的频域和时域响应。可视化复平面中的滤波器极点和零点。 频率响应 数字域 freqz 使用基于 FFT 的算法来计算数字滤波器的 Z 变换频率响应。具体来说&#xff0c;语句 [h,w]…

如何构建并提高自己的核心竞争力?

上一篇文章聊到了软件工程师的核心竞争力主要分为三个方面&#xff1a;快速学习能力、解决问题能力和个人影响力&#xff0c;且核心竞争力的培养和提高需要长时间实践和积累&#xff0c;并不是短时间就可以达到的。这篇文章&#xff0c; 来聊聊如何培养和提高自己的核心竞争力。…

2023年云计算发展趋势浅析

​​​​​​​ 云计算的概念 云计算是一种通过互联网提供计算资源和服务的模式。它允许用户通过网络访问和使用共享的计算资源&#xff0c;而无需拥有或管理这些资源的物理设备。云计算的核心理念是将计算能力、存储资源和应用程序提供给用户&#xff0c;以便随时随地根据需要…

线性代数(二)| 行列式性质 求值 特殊行列式 加边法 归纳法等多种方法

文章目录 1. 性质1.1 重要性质梳理1.1.1 转置和初等变换1.1.2加法行列式可拆分1.1.3 乘积行列式可拆分 1.2 行列式性质的应用1.2.1 简化运算1.2.2 将行列式转换为&#xff08;二&#xff09;中的特殊行列式 2 特殊行列式2.1 上三角或下三角行列式2.2 三叉行列式2.3 行列式行和&…

【Linux】第十三站:进程状态

文章目录 一、进程状态1.运行状态2.阻塞状态3.挂起状态 二、具体Linux中的进程状态1.Linux中的状态2.R状态3.S状态4.D状态5.T、t状态6.X状态(dead)7.Z状态&#xff08;zombie&#xff09;8.僵尸进程总结9.孤儿进程总结 一、进程状态 在我们一般的操作系统学科中&#xff0c;它…

Linux学习第39天:Linux I2C 驱动实验(三):哥俩好

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 linux I2C驱动试验整节的思维导图如下&#xff1a; 本节笔记主要学习试验程序的编写及运行测试。其中试验程序的编写主要包括修改设备树、AP3216驱动编写及编写测…

rocksdb 中 db_bench 的使用方法

硬件要求 硬件要求如表1所示。 表1 硬件要求 项目 说明 CPU 12 * AMD Ryzen 5 5500U with Radeon Graphics 内存 DDR4 磁盘 HDD 软件要求 软件要求如表2所示。 表2 软件要求 项目 版本 说明 下载地址 CentOS 7.6 操作系统。 Download kernel 4.14.0 内核。…

pytorch优化器详解

1 什么是优化器 1.1 优化器介绍 在PyTorch中&#xff0c;优化器&#xff08;Optimizer&#xff09;是用于更新神经网络参数的工具。它根据计算得到的损失函数的梯度来调整模型的参数&#xff0c;以最小化损失函数并改善模型的性能。 即优化器是一种特定的机器学习算法&#…

磁盘的分区、格式化、检验与挂载 ---- fdisk,mkfs,mount

磁盘的分区、格式化、检验与挂载 磁盘管理是非常重要的&#xff0c;当我们想要再系统里面新增一块磁盘使用时&#xff0c;应执行如下几步&#xff1a; 对磁盘进行划分&#xff0c;以建立可用的硬盘分区 &#xff08;fdisk / gdisk&#xff09;对硬盘分区进行格式化&#xff0…

javaScript爬虫程序抓取评论

由于评论区目前没有开放的API接口&#xff0c;所以我们不能直接通过编程获取到评论区的内容。但是&#xff0c;我们可以通过模拟浏览器的行为来实现这个功能。以下是一个使用Python的requests库和BeautifulSoup库来实现这个功能的基本思路&#xff1a; import requests from bs…

服务器往客户端发送字符串的网络编程

服务器主要就是能够打开命令行提供的网络端口&#xff0c;然后一有客户端连接上&#xff0c;就会向客户端发送Welcome to Our Server!这段话。 服务器代码serverSayWelcome.c的代码如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.…

MySQL库的库操作指南

1.创建数据库 一般格式&#xff1a;create database (if not exists) database1_name,database2_name...... 特殊形式&#xff1a; create database charset harset_name collate collate_name 解释&#xff1a; 红色字是用户自己设置的名称charset&#xff1a;指定数据…

网络安全——

文章目录 网络安全TCP/IP与网络安全网络安全构成要素加密技术基础 网络安全 TCP/IP与网络安全 起初&#xff0c;TCP/IP只用于一个相对封闭的环境&#xff0c;之后才发展为并无太多限制、可以从远程访问更多资源的形式。因此&#xff0c;“安全”这个概念并没有引起人们太多的…

FL Studio21.2宿主软件中文免费版下载

纵观当下宿主软件市场&#xff0c;正值百家争鸣、百花齐放之际像Mac系统的Logic Pro X、传统宿主软件代表Cubase、录音师必备Pro Tools、后起之秀Studio One等&#xff0c;都在各自的领域具有极高的好评度。而在众多宿主软件中&#xff0c;有这么一款历久弥新且长盛不衰的独特宿…

Linux应用开发基础知识——Framebuffer 应用编程(四)

前言&#xff1a; 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意 思&#xff0c;buffer 是缓冲的意思&#xff0c;这意味着 Framebuffer 就是一块内存&#xff0c;里面保存着 一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值&#xff0c;假设…

【云栖2023】王峰:开源大数据平台3.0技术解读

本文根据2023云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;王峰 | 阿里云研究员&#xff0c;阿里云计算平台事业部开源大数据平台负责人 演讲主题&#xff1a;开源大数据平台3.0技术解读 实时化与Serverless是开源大数据3.0时代的必然选…

【亚马逊云科技产品测评】活动征文|10分钟拥有一台AWS Linux系统

前言 在数字化时代&#xff0c;AWS云服务扮演着至关重要的角色。AWS&#xff08;Amazon Web Services&#xff09;是亚马逊公司旗下的云计算服务平台&#xff0c;为全球各地的企业、组织和个人开发者提供了一系列广泛而深入的云服务。 在AWS云服务中&#xff0c;计算、存储、数…

flink1.18.0 sql-client报错

报错 Flink SQL> select * from t1; [ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: Could not find any factory for identifier kafka that implements org.apache.flink.table.factories.DynamicTableFactory in t…

小程序如何部署SSL证书

微信小程序开发前提必须拥有一本SSL证书&#xff0c;办理SSL证书之前确保好指定的微信小程序开发接口使用的域名&#xff0c;如果没有域名的提前申请好&#xff0c;并且到国内服务器提供商去办理备案。 了解微信小程序使用SSL证书的作用&#xff0c;包括以下三个方面&#xff1…