广告
返回顶部
首页 > 资讯 > 数据库 >PHP MySQL 预处理语句
  • 667
分享到

PHP MySQL 预处理语句

phpmysql 2022-05-31 05:05:06 667人浏览 泡泡鱼
摘要

预处理语句对于防止 Mysql 注入是非常有用的。 预处理语句及绑定参数 预处理语句用于执行多个相同的 sql 语句,并且执行效率更高。 预处理语句的工作原理如下: 预处理:创建

预处理语句对于防止 Mysql 注入是非常有用的。


预处理语句及绑定参数

预处理语句用于执行多个相同的 sql 语句,并且执行效率更高。

预处理语句的工作原理如下:

  1. 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  2. 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出
  3. 执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。

相比于直接执行SQL语句,预处理语句有两个主要优点:

  • 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)
  • 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句
  • 预处理语句针对SQL注入是非常有用的,因为 参数值发送后使用不同的协议,保证了数据的合法性。

mysqli 预处理语句

以下实例在 MySQLi 中使用了预处理语句,并绑定了相应的参数:

实例 (MySQLi 使用预处理语句)

<?PHP
$servername = "localhost";
$username = "username";
$passWord = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// 设置参数并执行
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();
$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();
$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>

解析以下实例的每行代码:

"INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)"

在 SQL 语句中,我们使用了问号 (?),在此我们可以将问号替换为整型,字符串,双精度浮点型和布尔值。

接下来,让我们来看下 bind_param() 函数:

$stmt->bind_param("sss", $firstname, $lastname, $email);

该函数绑定了 SQL 的参数,且告诉数据库参数的值。 "sss" 参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。

参数有以下四种类型:

  • i - integer(整型)
  • d - double(双精度浮点型)
  • s - string(字符串)
  • b - BLOB(布尔值)

每个参数都需要指定类型。

通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险。

Note 注意: 如果你想插入其他数据(用户输入),对数据的验证是非常重要的。


PDO 中的预处理语句

以下实例我们在 PDO 中使用了预处理语句并绑定参数:

实例 (PDO 使用预处理语句)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // 预处理 SQL 并绑定参数
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);
    // 插入行
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();
    // 插入其他行
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "mary@example.com";
    $stmt->execute();
    // 插入其他行
    $firstname = "Julie";
    $lastname = "Dooley";
    $email = "julie@example.com";
    $stmt->execute();
    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
$conn = null;
?>
您可能感兴趣的文档:

--结束END--

本文标题: PHP MySQL 预处理语句

本文链接: https://www.lsjlt.com/news/9459.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP MySQL 预处理语句
    预处理语句对于防止 MySQL 注入是非常有用的。 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。 预处理语句的工作原理如下: 预处理:创建 ...
    99+
    2022-05-31
    php mysql
  • mysql预处理语句
    set @sql0 =strData;prepare tem from @sql0;execute tem;     ...
    99+
    2022-10-18
  • php中PDO有哪些预处理语句
    今天就跟大家聊聊有关php中PDO有哪些预处理语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的...
    99+
    2023-06-14
  • php PDO的预处理语句是什么
    本篇内容主要讲解“php PDO的预处理语句是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php PDO的预处理语句是什么”吧!1、位置参数利用bindParam()函数,而非直接提供值。...
    99+
    2023-06-30
  • MySQL中预处理语句prepare、execute、deallocate怎么用
    这篇文章将为大家详细讲解有关MySQL中预处理语句prepare、execute、deallocate怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 ...
    99+
    2022-10-18
  • PHP PDO预处理语句及事务的使用
    目录预处理语句功能事务能力总结预处理语句功能 预处理语句就是准备好一个要执行的语句,然后返回一个 PDOStatement 对象。一般我们会使用 PDOStatement 对象的 ...
    99+
    2022-11-12
  • php 使用预处理语句操作数据库
    目录什么是预处理语句?PDO 操作预处理语句mysqli 操作预处理语句总结什么是预处理语句? 预处理语句,可以把它看作是想要运行的 SQL 语句的一种编译过的模板,它可以使用变量...
    99+
    2022-11-12
  • Mysql——sql语句--处理时间
    默认单位:秒 时间----->字符串 select date_format(now(), "%Y-%m-%d %H:%i:%s"); -- 结果:2018-05-02 20:24:10 时间----->时间戳 select...
    99+
    2014-10-12
    Mysql——sql语句--处理时间
  • MySQL预处理
    C++预处理接口:  preparable_stmt 语句中的 是个占位符,字符串类型需要加上单引号。  创建预处理对象sql::PreparedStatement* tPreStmt = db_conn->prepareStatement...
    99+
    2018-04-18
    MySQL预处理
  • node如何封装mysql处理语句
    本篇内容介绍了“node如何封装mysql处理语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.所需包npm i m...
    99+
    2023-07-05
  • C语言预编译#define(预处理)
    目录一、预定义符号二、#define 定义标识符三、#define 定义宏四、#define 替换规则:五、#和## 两个符号(少见)六、宏和函数的对比七、#undef一、预定义符号...
    99+
    2022-11-13
  • MySQL语句汇总整理
    目录1.选择数据库 USE2.显示信息 SHOW3.创建表 CREATE TABLE4.插入数据 INSERT1.选择数据库 USE 刚链接到MySQL时,没有数据库打开供你使用,而...
    99+
    2022-11-12
  • Mysql常用语句整理
    原文:https://www.cnblogs.com/pengboke/p/14504223.html...
    99+
    2022-01-27
    Mysql常用语句整理 数据库入门 数据库基础教程
  • windows下bat批处理执行Mysql的sql语句
    有时候我们需要用bat来定时执行mysql那么就可以参考下面的代码  直接上代码: @ECHO OFF SET dbhost=主机名(例如:127.0.0.1) S...
    99+
    2022-11-11
  • 如何实现MySQL中事务处理的语句?
    如何实现MySQL中事务处理的语句?在数据库操作中,事务处理是非常重要的一部分,它可以确保一系列的操作要么全部执行,要么全部不执行。MySQL中的事务处理可以通过以下示例代码来实现。首先,让我们创建一个示例表格来演示事务处理的语句:CREA...
    99+
    2023-11-09
    MySQL 事务 编程关键词: MySQL 事务处理语句实现
  • EntityFrameworkCore批处理SQL语句
    在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句。那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删...
    99+
    2022-11-13
  • pdo中的预处理语法
    什么叫预处理语法 就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理”(编译); 该sql语句的“形式”中,含有“未给定的数据项”。 然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方...
    99+
    2021-12-20
    pdo中的预处理语法
  • C语言预处理详解
    目录一,预定义符号二,#define1,#define 定义标识符2,#define 定义宏3,#define 替换规则三,##的作用1,概念2,带副作用的宏参数3,宏和函数对比四,...
    99+
    2022-11-12
  • mysql常用的语句整理
    本篇内容主要讲解“mysql常用的语句整理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql常用的语句整理”吧! 1.复制表结构和数据,但是不复制索引和...
    99+
    2022-10-18
  • 2 select语句执行过程-缓存& 语法解析和预处理(Parser & Preprocessor)
    1.缓存 MySQL 的缓存默认是关闭的,8.0直接去掉了缓存模块 show variables like "query_cache%" 2.语法解析 从这个最简单的sql语句说起 select name from user_info w...
    99+
    2015-12-23
    2 select语句执行过程-缓存& 语法解析和预处理(Parser & Preprocessor)
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作