参数化查询:防止 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 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!