首页 >后端开发 >php教程 >如何在 MySQL INSERT 语句中安全地包含 PHP 变量?

如何在 MySQL INSERT 语句中安全地包含 PHP 变量?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-30 14:38:14413浏览

How Can I Safely Include PHP Variables in MySQL INSERT Statements?

在 MySQL 语句中包含 PHP 变量

将 PHP 变量作为 VALUES 子句的一部分插入到内容表中可能会出现问题。让我们解决这个问题并提供正确的方法。

使用准备好的语句

确保正确处理 MySQL 语句中的 PHP 变量至关重要。主要规则是使用准备好的语句。将 PHP 变量替换为 SQL 语句中的占位符,然后按照以下步骤操作:

  1. 准备更新的查询
  2. 变量绑定到它们的对应的占位符
  3. 执行准备好的语句

实现准备好的语句

使用 MySQLi:

<?php
$type = 'testing';
$reporter = "John";
$description = "whatever";

$sql = "INSERT INTO contents (type, reporter, description) VALUES ('$type', ?, ?)";
$mysqli->execute_query($sql, [$reporter, $description]);
?>

使用 PDO:

<?php
$type = 'testing';
$reporter = "John";
$description = "whatever";

$sql = "INSERT INTO contents (type, reporter, description) VALUES ('$type', ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$reporter, $description]);
?>

白名单过滤标识符

对于关键字或标识符(数据库、表或字段名称)等查询部分,请使用白名单过滤。这涉及将 PHP 变量与预定义的允许值列表进行显式比较。如果变量与允许的值匹配,则可以安全地包含在查询中。否则,抛出无效输入的异常。

结论

遵循这些准则可确保安全高效地处理 MySQL 语句中的 PHP 变量。对表示数据文字的变量使用准备好的语句并对标识符使用白名单过滤可以保证数据完整性并防止注入攻击。

以上是如何在 MySQL INSERT 语句中安全地包含 PHP 变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

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