将 PHP 变量作为 VALUES 子句的一部分插入到内容表中可能会出现问题。让我们解决这个问题并提供正确的方法。
确保正确处理 MySQL 语句中的 PHP 变量至关重要。主要规则是使用准备好的语句。将 PHP 变量替换为 SQL 语句中的占位符,然后按照以下步骤操作:
使用 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中文网其他相关文章!