首页 >数据库 >mysql教程 >参数化查询如何防止 SQL 注入?

参数化查询如何防止 SQL 注入?

DDD
DDD原创
2025-01-23 04:36:10787浏览

How Do Parameterized Queries Prevent SQL Injection?

参数化查询:防止 SQL 注入的盾牌

了解参数化查询

参数化查询,也称为预准备语句,是一种编写 SQL 语句的技术。 它将动态数据(参数)与查询的固定部分分开。这允许在执行过程中进行有效的参数设置。

PHP 和 MySQL:实际演示

让我们用一个包含用户电子邮件地址参数的 SQL 查询来说明:

<code class="language-sql">SELECT * FROM users WHERE email = 'foo@example.com'</code>

使用 mysqli 实现

<code class="language-php"><?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param('s', 'foo@example.com');
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    // Process the retrieved data...
}

$stmt->close();
?></code>

使用 PDO 实现

<code class="language-php"><?php
$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bindParam(1, 'foo@example.com', PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();

foreach ($result as $row) {
    // Process the retrieved data...
}
?></code>

参数化查询的主要优点:

  • 性能增强: 与为每个参数集编译新查询相比,预编译查询并使用不同的参数重用它可显着提高效率。
  • 强大的安全性:核心优势是防止 SQL 注入漏洞。 通过将变量与查询分开,可以防止恶意用户注入有害代码。

以上是参数化查询如何防止 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn