当前位置: 首页 > news >正文

php常用数据库操作

文章目录

  • PHP操作
    • 1. `mysqli_connect()` 连接数据库
    • 2. `mysqli_close()` 关闭数据库
    • 3. `mysqli_num_rows` 查询结果集中的行数
    • 4. `mysqli_select_db` 选择数据库的函数
    • 5. mysqli_query 常规的插入查找等
    • 6. header( )
    • 7.防止 sql 注入

PHP操作

1. mysqli_connect() 连接数据库

2. mysqli_close() 关闭数据库

<?php
$servername = "localhost";  // MySQL 服务器地址
$username = "root";         // 数据库用户名
$password = "password";     // 数据库密码
$dbname = "mydatabase";     // 数据库名// 建立与 MySQL 数据库服务器的连接
$conn = mysqli_connect($servername, $username, $password, $dbname);// 检查连接是否成功
if (!$conn) {die("连接失败: " . mysqli_connect_error());
}echo "连接成功!";// 在这里可以执行数据库操作// 关闭与 MySQL 数据库服务器的连接
mysqli_close($conn);
?>

mysqli_num_rows() 是 PHP 中用于获取查询结果中行数的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部分。MySQLi 是 PHP 提供的一个强大且面向对象的扩展,用于与 MySQL 数据库进行交互。

mysqli_num_rows 函数的语法如下:

mysqli_num_rows($result);

其中:

  • $result 是一个结果对象,它表示从数据库中返回的查询结果集。

3. mysqli_num_rows 查询结果集中的行数

函数返回查询结果集中的行数,即结果集中包含多少条记录。如果查询失败或返回的结果集为空,则该函数返回 0。

// 创建数据库连接
$connection = mysqli_connect('localhost', 'username', 'password', 'database');// 检查连接是否成功
if (mysqli_connect_errno()) {die('连接数据库失败: ' . mysqli_connect_error());
}// 执行查询
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);// 获取查询结果中的行数
$num_rows = mysqli_num_rows($result);echo "查询结果中共有 {$num_rows} 条记录\n";// 关闭数据库连接
mysqli_close($connection);

4. mysqli_select_db 选择数据库的函数

是 PHP 中用于选择数据库的函数。它用于在连接到 MySQL 数据库后,选择要操作的特定数据库。

bool mysqli_select_db ( mysqli $link , string $dbname )

参数说明:

  • $link:必需,一个有效的 MySQL 连接对象。
  • $dbname:必需,要选择的数据库名称。

返回值:

  • 如果选择数据库成功,则返回 true。
  • 如果选择数据库失败,则返回 false。

5. mysqli_query 常规的插入查找等

是 PHP 中用于执行 SQL 查询的函数,它是 MySQLi(MySQL Improved Extension)扩展库的一部分。MySQLi 是 PHP 提供的一个强大且面向对象的扩展,用于与 MySQL 数据库进行交互。

mysqli_query 函数的语法如下:

mysqli_query($connection, $query);

其中:

  • $connection 是一个数据库连接对象,它表示与 MySQL 数据库建立的连接。通常通过 mysqli_connectmysqli_init 函数创建连接对象。
  • $query 是要执行的 SQL 查询语句。

mysqli_query 函数执行指定的 SQL 查询,并返回一个结果对象或布尔值,具体取决于查询的类型和执行结果。

// 创建数据库连接
$connection = mysqli_connect('localhost', 'username', 'password', 'database');// 检查连接是否成功
if (mysqli_connect_errno()) {die('连接数据库失败: ' . mysqli_connect_error());
}// 执行查询
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);// 处理查询结果
if ($result) {// 读取结果集中的数据while ($row = mysqli_fetch_assoc($result)) {echo $row['username'] . "\n";}
} else {echo '查询失败: ' . mysqli_error($connection);
}// 关闭数据库连接
mysqli_close($connection);

6. header( )

echo '<script>window.location.href = "../index.php";</script>';
// 上面的语句可以替代下面的转向
header('Location:  ../index.php');

产生原因:由于想在进行数据库的读写之后,从 php 页面转到前端页面,使用 header() 不会执行他前面的 echo 语句,故此

7.防止 sql 注入

<?php
include_once "../variable.php";$conn = mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_database);
if(!$conn){echo "数据库".$mysql_database."连接失败";exit();
}
else echo "连接数据库".$mysql_database."成功";if(isset($_POST['text']) && isset($_POST['input'])){echo "<script>alert('提交');</script>";$cont1 = mysqli_real_escape_string($conn, $_POST['text']);$cont2 = mysqli_real_escape_string($conn, $_POST['input']);$sql = "INSERT INTO essy (column1, column2) VALUES (?, ?)";$stmt = mysqli_prepare($conn, $sql);mysqli_stmt_bind_param($stmt, "ss", $cont1, $cont2);$result = mysqli_stmt_execute($stmt);if(!$result){echo "插入数据时发生错误:" . mysqli_error($conn);}else{echo "插入数据成功";}
}
else{echo "<script>alert('提交错误');</script>";
}mysqli_close($conn);
?>

mysqli_real_escape_string():

	函数的作用就是将字符串中的特殊字符进行转义,使其成为合法的 SQL 字符串。转义后的字符串可以安全地插入到 SQL 查询语句中,而不会引发 SQL 注入问题。该函数接受两个参数:第一个是数据库连接对象,第二个是要转义的字符串。函数会返回转义后的字符串。

mysqli_prepare() :

	该函数用于准备 SQL 查询语句,返回一个 mysqli_stmt 对象。mysqli_prepare() 接受两个参数:第一个参数是数据库连接对象,第二个参数是要执行的 SQL 查询语句(参数使用占位符 "?" 表示)

这种格式可以提高执行查询的效率,并提高应用程序的安全性。

为后面的 mysqli_stmt_bind_param( ) mysqli_stmt_execute() 做准备


mysqli_stmt_bind_param( ) :

	用于绑定参数到准备好的查询语句中。它接受三个参数:第一个参数是 mysqli_stmt 对象,第二个参数是参数类型的字符串,第三个参数是要绑定的参数第二个参数类型:字符串类型:s整数类型:i双精度浮点类型:d布尔类型:b
第二个参数是根据第三个要绑定的来确定的,对应的是相应数据库中的类型,因此易知,第三个三数可以是多个值,即对应表中的不同列

只是绑定,并没有进行插入等操作,绑定之后通过 mysqli_stmt_execute() 来执行 sql 语句中的操作

具体根据 mysqli_prepare() 中的 sql 进行的


mysqli_stmt_execute()

	用于执行准备好的查询语句。它接受一个参数,即 mysqli_stmt 对象返回布尔值

以上四者搭配使用,一定程度上减小了一点点 sql 注入

相关文章:

php常用数据库操作

文章目录 PHP操作1. mysqli_connect() 连接数据库2. mysqli_close() 关闭数据库3. mysqli_num_rows 查询结果集中的行数4. mysqli_select_db 选择数据库的函数5. mysqli_query 常规的插入查找等6. header( )7.防止 sql 注入 PHP操作 1. mysqli_connect() 连接数据库 2. mysql…...

判断经纬度是否在某个城市内

一、从高德获取指定城市边界经纬度信息 通过apifox操作&#xff1a; 二、引入第三方jar包&#xff1a; maven地址&#xff1a;https://mvnrepository.com/ maven依赖&#xff1a; <dependency><groupId>org.locationtech.jts</groupId><artifactId>…...

Java——数组排序和查找

一、排序介绍 1、排序的概念 排序是将多个数据按照指定的顺序进行排列的过程。 2、排序的种类 排序可以分为两大类&#xff1a;内部排序和外部排序。 3、内部排序和外部排序 1&#xff09;内部排序 内部排序是指数据在内存中进行排序&#xff0c;适用于数据量较小的情况…...

Flutter中防抖动和节流策略

什么是防抖和节流&#xff1f; 函数节流&#xff08;throttle&#xff09;与 函数防抖&#xff08;debounce&#xff09;都是为了限制函数的执行频次&#xff0c;以优化函数触发频率过高导致的响应速度跟不上触发频率&#xff0c;出现延迟&#xff0c;假死或卡顿的现象 是应对频…...

设计模式-中介者(调停者)模式(行为型)

中介者模式 中介者模式是一种行为型模式&#xff0c;又叫调停者模式&#xff0c;它是为了解决多个对象之间&#xff0c;多个类之间通信的复杂性&#xff0c;定义一个中介者对象来封装一些列对象之间的交互&#xff0c;使各个对象之间不同持有对方的引用就可以实现交互&#xf…...

HC-05蓝牙模块配置连接和使用

文章目录 1. 前期准备 2. 进入AT模式 3. 电脑串口配置 4. 配置过程 5. 主从机蓝牙连接 6. 蓝牙模块HC-05和电脑连接 1. 前期准备 首先需要准备一个USB转TTL连接器&#xff0c;电脑安装一个串口助手&#xff0c;然后按照下面的连接方式将其相连。 VCCVCCGNDGNDRXDTXDTXD…...

云上小知识:企业选择云服务的小Tips

企业在选择云服务模式时&#xff0c;应综合考虑以下几个关键因素&#xff1a; 1. 业务需求与场景 企业需要根据自身的业务特点和需求来选择合适的云服务模式。例如&#xff0c;如果企业的用户分布广泛&#xff0c;需要跨地域提供服务&#xff0c;那么公有云可能是更好的选择。…...

生成式人工智能 - Stable Diffusion 都使用了哪些技术?

一、Stable Diffusion简述 1、简述 Stable Diffusion在2022年8月开源,是由慕尼黑大学的CompVis研究团队开发的生成式人工神经网络。该项目由初创公司StabilityAI、CompVis和Runway合作开发,并得到了EleutherAI和LAION的支持。截至2022年10月,StabilityAI已筹集了1.01亿美元…...

React的useState的基础使用

import {useState} from react // 1.调用useState添加状态变量 // count 是新增的状态变量 // setCount 修改状态变量的方法 // 2.添加点击事件回调 // userState实现计数实例import {useState} from react// 使用组件 function App() {// 1.调用useState添加状态变量// coun…...

接口自动化Requests+Pytest基础实现

目录 1. 数据库以及数据库操作1.1 概念1.2 分类1.3 作用 2 python操作数据库的相关实现2.1 背景2.2 相关实现 3. pymysql基础3.1 整个流程3.2 案例3.3 Pymysql工具类封装 4 事务4.1 案例4.2 事务概念4.3 事务特征 5. requests库5.1 概念5.2 角色定位5.3 安装5.4 校验5.5 reques…...

深入解析Kafka消息传递的可靠性保证机制

深入解析Kafka消息传递的可靠性保证机制 Kafka在设计上提供了不同层次的消息传递保证&#xff0c;包括at most once&#xff08;至多一次&#xff09;、at least once&#xff08;至少一次&#xff09;和exactly once&#xff08;精确一次&#xff09;。每种保证通过不同的机制…...

jEasyUI 设置排序

jEasyUI 设置排序 jEasyUI 是一个基于 jQuery 的框架,用于轻松构建交互式的 Web 应用程序。它提供了一系列的 UI 组件,如表格(datagrid)、树(tree)、下拉列表(combobox)等,这些组件可以帮助开发者快速实现复杂的界面功能。在本文中,我们将重点讨论如何在 jEasyUI 中…...

MySQL之查询性能优化(十二)

查询性能优化 优化COUNT()查询 4.使用近似值 有时候某些业务场景并不要求完全精确的COUNT值&#xff0c;此时可以用近似值来代替。EXPLAIN出来的优化器估算的行数就是一个不错的近似值&#xff0c;执行EXPLAIN并不需要真正地去执行查询&#xff0c;所以成本很低。很多时候&am…...

7-16 二分查找

7-16 二分查找 分数 25 全屏浏览 切换布局 作者 李廷元 单位 中国民用航空飞行学院 请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置&#xff0c;如果数组中不存在这样的数&#xff0c;则输出数组长度加一。 输入格式: 输入第一行有两个…...

对Java中二维数组的深层认识

首先&#xff0c;在JAVA中&#xff0c;二维数组是一种数组的数组。它可以看作是一个矩阵&#xff0c;通常是由于表示二维数据节后&#xff0c;如表格和网格。 1.声明和初始化二维数组 声明 int[][] arr;初始化 int[][] arrnew int[3][4];或者用花括号嵌套 int[][] arr{{1,…...

C++的STL 中 set.map multiset.multimap 学习使用详细讲解(含配套OJ题练习使用详细解答)

目录 一、set 1.set的介绍 2.set的使用 2.1 set的模板参数列表 2.2 set的构造 2.3 set的迭代器 2.4 set的容量 2.5 set的修改操作 2.6 set的使用举例 二、map 1.map的介绍 2.map的使用 2.1 map的模板参数说明 2.2 map的构造 2.3 map的迭代器 2.4 map的容量与元…...

【Java笔记】第10章:接口

前言1. 接口的概念与定义2. 接口的声明与语法3. 接口的实现4. 接口的继承5. 接口的默认方法6. 接口的静态方法7. 接口的私有方法8. 接口的作用9. 接口与抽象类的区别10. 接口在Java集合中的应用结语 上期回顾:【Java笔记】第9章&#xff1a;三个修饰符 个人主页&#xff1a;C_G…...

Angular知识概览

Angular 是一个由 Google 维护的开源前端框架&#xff0c;用于构建动态网页应用。以下是对 Angular 主要概念和特性的概览&#xff1a; 1. Angular 的核心概念 - 组件 (Component)&#xff1a;Angular 应用的基本构建块。每个组件包括一个 TypeScript 类&#xff0c;用于处理数…...

经典文献阅读之--Online Monocular Lane Mapping(使用Catmull-Rom样条曲线完成在线单目车道建图)

0. 简介 对于单目摄像头完成SLAM建图这类操作&#xff0c;对于自动驾驶行业非常重要&#xff0c;《Online Monocular Lane Mapping Using Catmull-Rom Spline》介绍了一种仅依靠单个摄像头和里程计生成基于样条的在线单目车道建图方法。我们提出的技术将车道关联过程建模为一个…...

frida timed out

从Android Q(10)开始&#xff0c;Google引入了一种新的机制&#xff0c;加快了app的启动时间 Android USAP 进程启动流程 adb shell su ps -A | grep usaproot 9917 1032 6577052 13676 __skb_wait_for_more_packets 0 S usap64 root 9928 1032 6577052…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...