数据库操作(php+mysql)

news2024/11/5 5:25:35

一  SQL  命令

        SQL(Structured Query Language)是一种用于操作和管理关系型数据库的语言。下面是一些常见的SQL查询命令和示例:

1. SELECT命令:用于从数据库中选取数据。

示例:从表格中选取所有的数据

SELECT * FROM table_name;

示例:从表格中选取指定的列

SELECT column1, column2 FROM table_name;

2. WHERE命令:用于过滤数据,根据特定的条件进行查询。

示例:选取满足条件的数据

SELECT * FROM table_name WHERE condition

3. ORDER BY命令:用于将结果按照指定的列进行排序。

示例:按照指定的列升序排序

SELECT * FROM table_name ORDER BY column_name ASC;

示例:按照指定的列降序排序

SELECT * FROM table_name ORDER BY column_name DESC;

4. INSERT INTO命令:用于向数据库中插入新的数据。

示例:插入数据到指定的表格

INSERT INTO table_name (column1, column2) VALUES (value1, value2);

5. UPDATE命令:用于更新数据库中的数据。

示例:更新指定表格中的数据

UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

6. DELETE命令:用于从数据库中删除数据。

示例:删除满足条件的数据

DELETE FROM table_name WHERE condition;

        这些是SQL中最常见的查询命令和示例,可以根据具体的需求和数据库结构进行进一步的学习和使用。

二   PHP操作MYSQL

        在PHP中,可以使用MySQLi或PDO来操作MySQL数据库。下面是使用MySQLi进行MySQL操作的详细讲解:

1. 连接到数据库

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

2. 查询数据

$sql = "SELECT * FROM table";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        // 处理每一行数据
    }
} else {
    echo "0 结果";
}

3. 插入数据

$sql = "INSERT INTO table (column1, column2, column3) VALUES ('value1', 'value2', 'value3')";
if ($conn->query($sql) === TRUE) {
    echo "插入成功";
} else {
    echo "插入失败: " . $conn->error;
}

4. 更新数据

$sql = "UPDATE table SET column1='new value' WHERE condition";
if ($conn->query($sql) === TRUE) {
    echo "更新成功";
} else {
    echo "更新失败: " . $conn->error;
}

5. 删除数据

$sql = "DELETE FROM table WHERE condition";
if ($conn->query($sql) === TRUE) {
    echo "删除成功";
} else {
    echo "删除失败: " . $conn->error;
}

6. 关闭数据库连接

$conn->close();

        以上是使用MySQLi进行MySQL操作的详细讲解。使用PDO的操作方式类似,只是语法略有不同。

三  读写数据库步骤 

使用PHP读写数据库的一般步骤如下:

  1. 连接数据库:使用PHP内置函数 mysqli_connect() 或 PDO 类连接到数据库服务器。需要提供数据库服务器的主机名、用户名、密码和数据库名称。

  2. 准备SQL语句:编写SQL语句用于读取或写入数据。可以使用SELECT语句查询数据,使用INSERTUPDATEDELETE语句写入数据。

  3. 执行SQL语句:使用连接对象的 mysqli_query() 函数或 PDO 对象的 exec() 函数执行SQL语句。

  4. 处理查询结果:如果执行的是查询语句,使用 mysqli_query() 函数或 PDO 对象的 fetch() 函数处理返回的结果集。可以使用循环遍历结果集,并将结果存储在变量中或输出到网页上。

  5. 关闭数据库连接:使用 mysqli_close() 函数或 PDO 对象的 close() 函数关闭与数据库的连接。这是为了释放资源和确保安全性。

        需要注意的是,使用mysqliPDO提供的预处理语句功能可以防止SQL注入攻击,建议在执行SQL语句之前对用户输入的数据进行过滤或转义处理。另外,还可以通过配置数据库连接参数和使用事务来提高数据库操作的性能和安全性。

四   防止同名注册

在PHP中,可以通过以下几种方法来防止同名注册:

1. 数据库唯一索引约束:在数据库中的用户名字段上创建唯一索引约束,这将确保每个用户名只能在数据库中出现一次。在插入新用户时,如果插入的用户名已经存在,数据库将会报错,从而阻止同名注册。

2. 前端表单验证:在用户注册表单中,使用JavaScript进行前端验证。在提交表单之前,验证用户名是否已经存在。可以通过AJAX请求将用户名发送到服务器,服务器端通过查询数据库判断用户名是否已存在,然后将结果返回给前端进行相应的提示。

3. 后端验证:在接收用户提交的注册表单数据时,通过查询数据库判断用户名是否已存在。如果用户名已存在,则返回错误信息给用户,提示用户名已被注册。

4. 使用验证码:加入验证码,以确保用户是真实的人类而不是机器人。这可以防止恶意用户使用脚本自动注册大量同名账户。

以下是一个简单的示例,展示如何在注册用户时防止同名注册。

// 连接到数据库
$conn = mysqli_connect("localhost", "username", "password", "database");

// 检查表单是否提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取表单数据
    $username = $_POST["username"];
    $password = $_POST["password"];

    // 检查用户名是否已经存在
    $query = "SELECT * FROM users WHERE username = '$username'";
    $result = mysqli_query($conn, $query);

    if (mysqli_num_rows($result) == 0) {
        // 用户名不存在,可以进行注册
        $query = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
        mysqli_query($conn, $query);

        // 注册成功后的操作
        echo "注册成功!";
    } else {
        // 用户名已经存在,注册失败
        echo "用户名已经存在,请选择其他用户名。";
    }
}

        在上面的示例中,我们首先连接到数据库。然后检查表单是否以 POST 方法提交。如果是,则从表单中获取用户名和密码。接下来,我们查询数据库以检查用户名是否已经存在。如果用户名不存在,则将用户信息插入到数据库中,并输出注册成功的消息。如果用户名已经存在,则输出用户名已经存在的消息。请注意,上面的代码只是一个示例,你需要根据实际情况进行适当的修改和验证。

五   ThinkPHP操作数据库 

        在ThinkPHP中,可以使用数据库操作的方式进行数据库的增删改查操作。以下是一些常见的数据库操作方法:

1. 连接数据库

在config/database.php文件中配置数据库连接信息,然后使用Db类的connect方法连接数据库,例如:

use think\db\Db;
Db::connect();

2. 查询数据

使用Db类的query方法执行查询语句,例如:

use think\db\Db;
$result = Db::query('select * from users');

3. 插入数据

使用Db类的execute方法执行插入语句,例如:

use think\db\Db;
$data = [
    'name' => 'John',
    'age' => 25,
    'email' => 'john@example.com'
];

Db::execute('insert into users (name, age, email) values (:name, :age, :email)', $data);

4. 更新数据

使用Db类的execute方法执行更新语句,例如:

use think\db\Db;
Db::execute('update users set name = "John Doe" where id = 1');

5. 删除数据

使用Db类的execute方法执行删除语句,例如:

use think\db\Db;
Db::execute('delete from users where id = 1');

        以上是一些基本的数据库操作方法,你可以根据具体的需求和场景进行调整和扩展。

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

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

相关文章

Efficient Cascaded Multiscale Adaptive Network for Image Restoration 论文阅读笔记

Efficient Cascaded Multiscale Adaptive Network for Image Restoration 论文阅读笔记 这是新国立和新加坡管理大学发表在ECCV2024上的一篇image restoration的文章,提出了一个新的网络结构ECMA,从实验结果上看在超分,去噪,去模糊…

不需要复制粘贴,重复内容如何使用Mac快速完成输入

在Mac的日常使用中,必然有着重复内容需要重复输入的需求,但是Mac的剪切板又不具备历史记录的功能,所以只能一次次的复制粘贴,费时费力,那么该如何才能不这么麻烦 快捷短语就是为了解决这一问题而存在的 提前在设置好…

ubuntu20.04 加固方案-设置限制su命令用户组

一、编辑/etc/pam.d/su配置文件 打开终端。 使用文本编辑器(如vim)编辑/etc/pam.d/su文件。 vim /etc/pam.d/su 二、添加配置参数 在打开的配置文件的中,添加以下参数: auth required pam_wheel.so 创建 wheel 组 并添加用户 …

002 配置YUM国内镜像源

打开XShell 工具,连接Linux 选择上次的连接,直接双击。 具体连接步骤,参考前面的内容001 编辑YUM默认配置文件 /etc/yum.repos.d/CentOS-Base.repo 是YUM的默认配置文件。 修改这个文件,将其中的内容替换成国内的镜像源 输入下…

【工具变量】大数据管理机构改革DID(2007-2023年)

数据简介:数字ZF是指以新一代信息技术为支撑,重塑政务信息化管理架构、业务架构、技术架构的现代化治理模式。随着数字政府的建设,特别是借助大数据等新一代数字技术,极大地提升了政府的治理能力,从而起到辅助监管机构…

WPF+MVVM案例实战(二十一)- 制作一个侧边弹窗栏(AB类)

文章目录 1、案例效果1、侧边栏分类2、AB类侧边弹窗实现1.文件创建2、样式代码与功能代码实现3、功能代码实现 3 运行效果4、源代码获取 1、案例效果 1、侧边栏分类 A类 :左侧弹出侧边栏B类 :右侧弹出侧边栏C类 :顶部弹出侧边栏D类 &#xf…

【WebRTC】WebRTC的简单使用

目录 1.下载2.官网上的使用3.本地的使用 参考: 【webRTC】一、windows编译webrtc Windows下WebRTC编译 1.下载 下载时需要注意更新python的版本和网络连接,可以先试试ping google。比较关键的步骤是 cd webrtc-checkout set https_proxy127.0.0.1:123…

从 vue 源码看问题 — 如何理解 vue 响应式?

书接上回 上一篇 我们通过 Vue 源码了解并总结了,Vue 初始化时需要进行哪些处理,其中遇到响应式的相关内容时选择了略读,没有进行深入了解,那么本篇就开始深入解读 Vue 响应式. 深入源码 响应式入口 根据上一篇 vue 初始化都做…

动态规划理论基础和习题【力扣】【算法学习day.22】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

Django3 + Vue.js 前后端分离书籍添加项目Web开发实战

文章目录 Django3后端项目创建切换数据库创建Django实战项目App新建Vue.js前端项目 Django3后端项目创建 创建Django项目,采用Pycharm或者命令行创建皆可。此处,以命令行方式作为演示,项目名为django_vue。 django-admin startproject djang…

论文翻译 | Evaluating the Robustness of Discrete Prompts

摘要 离散提示已被用于调整预训练语言模型,以适应不同的NLP任务。特别是,从一小组训练实例中生成离散提示的自动方法已经报告了优越的性能。然而,仔细观察习得的提示会发现,它们包含嘈杂和反直觉的词汇结构,而这些在手…

自适应对话式团队构建,提升语言模型代理的复杂任务解决能力

人工智能咨询培训老师叶梓 转载标明出处 如何有效利用多个大模型(LLM)代理解决复杂任务一直是一个研究热点。由美国南加州大学、宾夕法尼亚州立大学、华盛顿大学、早稻田大学和谷歌DeepMind的研究人员联合提出了一种新的解决方案——自适应团队构建&…

linux之网络子系统- TCP连接的开销,主要是内存的开销

一、相关实际问题 内核是如何管理内存的如何查看内核使用的内存信息服务器上一条ESTABLISH状态的空连接需要消耗多少内存机器上出现了3万多个TIME_WAIT,内存开销会不会很大 二、Linux内核如何管理内存 内核针对自己的应用场景,使用了一种叫做SLAB/SLU…

企业AI助理驱动的决策支持:从数据洞察到战略执行

在当今瞬息万变的商业环境中,企业面临着前所未有的竞争压力和不确定性。为了保持竞争力,企业不仅需要迅速响应市场变化,还需要做出基于数据的明智决策。随着人工智能技术的飞速发展,企业AI助理正在成为决策过程中的重要工具&#…

二、应用层,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》

文章目录 零、前言一、应用层协议原理1.1 网络应用的体系结构1.1.1 客户-服务器(C/S)体系结构1.1.2 对等体(P2P)体系结构1.1.3 C/S 和 P2P体系结构的混合体 1.2 进程通信1.2.1 问题1:对进程进行编址(addressing)&#…

02-Dubbo特性及工作原理

02-Dubbo特性及工作原理 Dubbo 的特性 这里说一下 Dubbo 最主要的特性,从这些特性中,就可以看出来我们为什么要选用 Dubbo,也可以将 Dubbo 和 Spring Cloud 进行对比,比如我们搭建一套微服务系统,出于什么考虑选用 Dub…

通义灵码AI程序员你在用吗?

大家好,我是袁庭新。之前给大家介绍过AI编码助手——通义灵码,这期给大家分享通义灵码AI程序员的一些功能。 随着大模型的持续进化,在语义理解、代码生成、开发工作流等方面的能力也获得了持续、全面的提升。你说,要是有个编程小…

好难的题啊

序: 1.极坐标本质为变化的圆:动曲线---》格林公式 2.曲线积分常见的化简就是对dx,dy进行操作,这要求寻找到合适函数,而极坐标就是天然的函数(参数方程) 3.重积分--》累次积分--》单独看其中一…

大学适合学C语言还是Python?

在大学学习编程时,选择C语言还是Python,这主要取决于你的学习目标、专业需求以及个人兴趣。以下是对两种语言的详细比较,帮助你做出更明智的选择: C语言 优点: 底层编程:C语言是一种底层编程语言&#x…

开源模型应用落地-Qwen2.5-7B-Instruct与TGI实现推理加速

一、前言 目前,大语言模型已升级至Qwen2.5版本。无论是语言模型还是多模态模型,均在大规模多语言和多模态数据上进行预训练,并通过高质量数据进行后期微调以贴近人类偏好。在本篇学习中,将集成 Hugging Face的TGI框架实现模型推理…