什么';s是在保存到mysql的php脚本中转义引号的最佳方法


What's the best way of escaping quotes in a php script that saves to mysql?

我要反复讨论这个问题,所以我想我会在这里问。我希望有一种单一的技术可以适用于所有的输入字段(文本、选择、文本区域)。

  1. 首先,我们使用php脚本处理用户输入。可能存在一些验证错误,因此可能需要使用用户输入的值重新显示表单。htmlspecialchars($fieldValue, ENT_QUOTES)在这里不起作用,因为如果出现验证错误并重新显示表单,用户输入的所有引号都会转换为''"。至少在文本区域中是这样。

  2. 一旦表单成功验证,我们就需要将输入发送到数据库。列值需要是"安全的",因此需要进行一些转换。我知道在从数据库中读取时,我可能也需要应用某种形式的转换,尽管我希望这一点是错误的。

寻找一个不涉及太多代码的良好实践。

===

只是作为一个更新。在Domino表单中,没有任何类型的转义,也不需要特殊处理。Notes只是自动为它做这件事。在使用JPA的Java应用程序中,所有这些"安全性"也都是自动处理的。我知道php可能没有等效的,但这是一个常见的问题,我选择相信我错过了一些非常简单的解决方案。

只需使用mysql_real_escape_string()过滤需要进入DB的输入!

快速解决'"问题,关闭magic_quotes,无论如何都不应该使用它。

对于您的另一个问题,请使用支持准备好的语句的驱动程序,如果您正在寻找JPA等效程序,请不要使用,而是使用ORM。

为了验证表单中的用户输入,请使用一个表单库来处理这些平凡的任务。

您可以使用类似ORM的Doctrine来自动执行许多操作。您确实应该使用PDO进行数据库访问,这将允许您进行"绑定"而不是"转义"。仅仅使用转义可能会对UTF8字符和编码产生问题。