PHP MySQLi基础教程 MySQL 预处理语句

yumo6664个月前 (07-13)技术文章79

预处理语句及绑定参数

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

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

  1. 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如:

  1. 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。

  2. 执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。

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

  • 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。

  • 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。

  • 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。

  • MySQLi 预处理语句

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

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

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

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

参数有以下四种类型:

  • i - integer(整型)

  • d - double(双精度浮点型)

  • s - string(字符串)

  • b - BLOB(binary large object:二进制大对象)

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

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

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

PDO 中的预处理语句

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

更多编程知识学习资料请关注微信公众号(若鸿网)

相关文章

PHP MySQLi基础教程 创建 MySQL 表

使用 MySQLi 和 PDO 创建 MySQL 表CREATE TABLE 语句用于创建 MySQL 表。我们将创建一个名为 "MyGuests" 的表,有 5 个列: "id", "firstna...

PHP MySQLi基础教程 数据库 ODBC(mysql+php)

ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库)。创建 ODBC 连...

区区1万张表就把MySQL给整崩溃了(我本是辅助,今晚来打野,区区三万天,试试又能怎)

Percona 资深工程师 Marco Tusa 近日爆料称,升级到 MySQL 8.0.38 版本后,当实例中的表个数超过一万个,实例重启后会发生 Crash 而失败,即便是重启时加上 valida...

PHP MySQLi基础教程 MySQL 创建数据库

数据库存有一个或多个表。你需要 CREATE 权限来创建或删除 MySQL 数据库。使用 MySQLi 和 PDO 创建 MySQL 数据库CREATE DATABASE 语句用于在 MySQL 中创...

PHP MySQLi基础教程 连接数据库(php连接mysql的步骤代码)

注意在以上面向对象的实例中 $connect_error 是在 PHP 5.2.9 和 5.3.0 中添加的。如果你需要兼容更早版本 请使用以下代码替换:// 检测连接if (mysqli_conne...

Ubuntu linux 上的 Nginx 和 Php 安装

教程 - 在 Ubuntu Linux 上安装 Nginx1.安装 Nginx 服务器和所需的包。apt-get updatebrapt-get install nginx2.在 Nginx 配置文件...