在 PHP 中转义 MySQL 插入的单引号
将数据插入 MySQL 数据库通常涉及处理包含特殊字符的字符串。处理单引号可能特别棘手。
问题
描述了一个场景,其中使用两个 SQL 语句插入和处理表单中的数据。第一条语句用于将数据插入数据库,没有出现任何问题。然而,当名称包含单引号(例如“O'Brien”)时,检索数据并触发电子邮件的第二条语句失败,并出现 MySQL 错误。
解决方案
解决方案在于转义插入数据库的字符串。 PHP 为此提供了 mysql_real_escape_string() 函数。它将单引号等字符替换为其转义的等效字符,从而防止错误和数据损坏。
为什么会有不同的行为?
两个语句之间行为不同的原因可能是由于使用了 magic_quotes_gpc。此 PHP 配置自动转义从 $_GET、$_POST 和 $_COOKIES 收集的字符串。在第一个语句中,直接从表单中捕获数据,并应用了这种自动转义。
但是,当在第二个语句中检索并插入数据时,它不再转义。结果,名称中的单引号导致了 MySQL 错误。通过使用 mysql_real_escape_string(),两个字符串都可以正确转义,确保正确处理特殊字符并保持数据完整性。
以上是如何使用 PHP 安全地将带单引号的字符串插入 MySQL?的详细内容。更多信息请关注PHP中文网其他相关文章!