SQL预处理语句

概念

预处理语句是一种特殊的数据库操作方式,先定义一个SQL语句模板,然后再填充具体的数据。

作用

防止SQL注入

  • 参数化查询:在预处理语句中,数据是通过参数传递的,而不是直接拼接到SQL语句中。这意味着即使参数中包含SQL命令,数据库也不会将其解释为SQL命令,因为数据库在预处理阶段已经确定了SQL语句的结构。

  • 自动转义:数据库接口会自动对传递的参数值进行转义,这可以防止特殊字符被解释为SQL语法的一部分。

优化代码结构

  • 编译优化:数据库可以预先编译SQL语句模板,当使用相同的模板但不同参数执行多次操作时,可以减少编译时间。

SQL语句预处理

1.连接数据库

        $address = '127.0.0.1';

        $lname = 'root';

        $lpasswd = 'root';

        $initalize_con = new mysqli($address,$lname,$lpasswd) 

2.准备SQL语句模板

使用占位符(?)代替实际写入的参数

        $sql = "INSERT INTO login.login_tables(name,password)VALUE(?,?)";

3.使用mysqli对象内prepare()方法准备SQL语句

prapare():mysqli对象方法

用于准备一个SQL语句,以便后续使用。

接受一个SQL语句作为参数,返回一个mysqli_stmt对象,该对象用于后续的参数绑定和执行。

$stmt = $initalize_con->prepare($sql);

4.使用mysqli_stmt对象中bind_param()方法绑定参数及其类型

bind_param():mysqli_stmt对象方法

用于将PHP变量与SQL语句中的参数占位符绑定,并指定参数的数据类型。类型指定符如下:

  • s:字符串
  • i:整数
  • d:双精度浮点数

$stmt->bind_param("ss",$name,$passwd);

5.添加数据

6.运行SQL语句

 execute():mysqli_stmt对象

用于执行一个预处理的SQL语句。根据语句类型的不同,可以直接使用变量接收,或通过调用get_result()获取查询结果集。

$end = $stmt->execute();

7.使用get_result接收查询sql语句执行后的结果集对象

 get_result():mysqli_stmt对象

获取预处理语句的执行结果,并返回一个mysqli_result对象,该对象包含了查询结果集。

对于非查询类SQL语句(如INSERTUPDATEDELETE),使用get_result()会返回false,因为这些操作不返回结果集,它们只是对数据库进行修改。

$res = $stmt->get_result();

8.关闭预处理和数据库连接

关闭预处理用于释放资源,避免报错,编码规范

        $stmt->close();

        $initalize_con->close();

 

 

 

 

 

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

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

相关文章

Javaweb数据库通用查询BaseDao

连接数据库工具类:DBUtil.java package util;import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;/** param null:* jdbc连接工具类* return null* author liu* description TODO* date 2024/5/25 17:05*/ …

flinkcdc 3.0 源码学习之客户端flink-cdc-cli模块

注意 : 本文章是基于flinkcdc 3.0 版本写的 我们在前面的文章已经提到过,flinkcdc3.0版本分为4层,API接口层,Connect链接层,Composer同步任务构建层,Runtime运行时层,这篇文章会对API接口层进行一个探索.探索一下flink-cdc-cli模块,看看是如何将一个yaml配置文件转换成一个任务…

电子画册制作技巧,从零基础到专业人士

电子画册作为一种新兴的视觉传达形式,正越来越受到大众的喜爱。从设计新手到专业人士,如何快速掌握电子画册的制作技巧,提升自己的创作水平呢? 一、明确设计目的和定位 制作电子画册前,首先要明确其设计目的和定位。画…

数字营销:以大数据作引擎,推动企业全面数字化升级

数字营销本质乃是以大数据为核之心,促使营销活动高效运作,消费者线上线下数据的无缝衔接、企业内外部数据的贯通、公域引流私域运营等,皆已成为企业运营的标准配置。 数据即等同于市场,市场即等同于用户,用户乃是企…

回溯算法之简单组合

哦吼!今天结束了二叉树,开始回溯算法 其实也需要用到迭代,哈哈哈哈,但是这个暴力穷举真的好爽。 先记一下回溯算法的基本框架吧 老规矩: 还是有结束条件 但是后面就不太一样了 这里就是for循环,循环n…

理解 gRPC 和 tRPC 的区别:简单入门

gRPC 和 tRPC 的区别 在现代分布式系统和微服务架构中,服务间的通信至关重要。API 技术栈的选择直接影响到系统的性能、可维护性和开发效率。gRPC 和 tRPC 是两种备受关注的 RPC(远程过程调用)框架,各有其独特的特性和适用场景。…

springMVC,springboot整合jasypt

生成加密串 public class Encryptor { public static void main(String[] args) { BasicTextEncryptor textEncryptor new BasicTextEncryptor(); textEncryptor.setPassword("mysalt");//自定义加密盐 String myEncryptedPassword t…

Windows下mingw32编译ffmpeg5.1.4实现rtsp拉流

由于客户要求,要在Windows下使用mingw32编译,去ffmpeg.org下载需要编译的版本,使用msys2方法进行编译,使用QT5.10的编译器,基本上把网上的方法试了个遍,编译全部库总是报错出问题 查看了ffbuild文件夹中con…

爬虫之re数据清洗

文章目录 一、正则【Regular】二、重要语法1、获取内容: 左边(.*?)右边2、替换数据: re.sub(源数据|源数据, 目标数据, 字符串) 一、正则【Regular】 概念: 根据程序员的指示, 从<字符串>中提取数据 结果: 列表 使用频率: 正则跟xpath相比, 正则是弟弟 二、重要语法 …

SvelteKit:构建高性能SSR应用的新框架

SvelteKit 是基于 Svelte 的下一代框架&#xff0c;用于构建服务器端渲染&#xff08;SSR&#xff09;和静态站点生成&#xff08;SSG&#xff09;的应用。Svelte 是一个轻量级的前端框架&#xff0c;以其极高的性能和简洁的代码著称。SvelteKit 扩展了 Svelte 的能力&#xff…

【Maven】Maven主要知识点目录整理

1. Maven的基本概念 作者相关文章链接&#xff1a; 1、【Maven】简介_下载安装-CSDN博客 定义&#xff1a;Maven是Apache的一个开源项目&#xff0c;是Java开发环境中用于管理和构建项目&#xff0c;以及维护依赖关系的强大软件项目管理工具。作用&#xff1a;简化了项目依赖…

文件夹类型异常成文件:原因解析与恢复策略

在数字时代&#xff0c;数据的安全与完整性对于个人和企业都至关重要。然而&#xff0c;有时我们可能会遇到一种令人困惑的情况&#xff1a;原本应该是文件夹的图标&#xff0c;却突然变成了文件的图标&#xff0c;这就是所谓的“文件夹类型成文件”问题。本文将深入探讨这一现…

Swagger测试接口,请求头添加token

概述Swagger 1、概述 在日常开发中&#xff0c;我们的业务需要用户登录&#xff0c;权限控制。但是在某些情况下我们使用Swagger测试接口&#xff0c;部分接口需要携带token&#xff0c;才能访问&#xff0c;就需要在swagger添加token窗口。 效果图&#xff1a; 由 右上角 A…

如何判断一个对象是否已经被回收?

在Java中&#xff0c;无法直接判断一个对象是否已经被垃圾回收&#xff08;GC&#xff09;。Java的设计理念是让垃圾回收机制完全由JVM管理&#xff0c;程序员不应该也不能直接干预或查询垃圾回收的状态。然而&#xff0c;有一种间接的方法可以帮助我们了解对象是否已被回收&am…

数据库查询以及修改方法 aspx ashx

main.aspx页面 <% Page Language"C#" AutoEventWireup"true" %> <% Import Namespace"MysqlHelpers" %> <!DOCTYPE html> <script runat"server"> public string RecId, userid, LOGIN, Token, ORG_…

Python计算回归拟合各项指标

0、各项回归指标简介 Relative Root Mean Squared Error&#xff08;RRMSE&#xff09;&#xff1a;The RRMSE normalizes the Root Mean Squared Error (RMSE) by the mean of observations. It goes from 0 to infinity. The lower the better the prediction performance.T…

一千题,No.0031(A除以B)

本题要求计算 A/B&#xff0c;其中 A 是不超过 1000 位的正整数&#xff0c;B 是 1 位正整数。你需要输出商数 Q 和余数 R&#xff0c;使得 ABQR 成立。 输入格式&#xff1a; 输入在一行中依次给出 A 和 B&#xff0c;中间以 1 空格分隔。 输出格式&#xff1a; 在一行中依…

衍生品赛道的 UniSwap:SynFutures 或将成为行业领军者

经过一个周期的发展&#xff0c;DeFi 已经成为基于区块链构建的最成功的去中心化应用&#xff0c;并彻底改变了加密市场的格局。加密货币交易开始逐步从链下转移到链上&#xff0c;并从最初简单的 Swap 到涵盖借贷、Staking、衍生品交易等广泛的生态系统。 在 DeFi 领域&#x…

小红书图片生成

先找一找有没有直接生成小红书图片的项目。这个项目和图片生成项目还是有一点区别的,小红书的图片不仅关注图片上的商品,可能一篇文章中,有商品的图片可能就一张,更多还是带有文字的图片,那么就是对文字进行替换,目前的图片生成,很少有这块的能力。1.目前的图像生成在电…