什么时候使用mysql真正的转义字符串

时间:2012-03-16 12:20:19

标签: php mysql-real-escape-string

我很困惑,我读了几篇文章,但我仍然不确定。我不想去准备好的语句路由,因为这个站点只在我们的内部网上。我已经阅读了以下帖子,但我仍然不确定。

  1. When to use mysql_real_escape_string?
  2. When to use mysql_real_escape_string()
  3. 我的问题:我应该使用mysql-real-escape-string

    1. 仅当我从表单OR
    2. 获取用户输入时
    3. 我的所有疑问?例如:SELECT * FROM ......
    4. 例如,在this post中,它指出:You need to call this function when building SQL queries with string literals. You should not call it anywhere else.

5 个答案:

答案 0 :(得分:2)

我实际上是在使用它:

我将要添加到MySQL查询中的任何变量,如果它是直接用户输入(通过表单),或者是我的参数,则可以由用户修改已经通过GET requests等传递了

你明白我的观点......: - )

答案 1 :(得分:2)

准备好的语句(以及其他内容)所做的是调用类似于mysql_real_escape_string()的方法
如果您不使用PDO,那么没关系,您必须了解您在做什么,并且您将获得相同的安全级别。
唯一且简单的规则是all raw data needs mysql_real_escape_string()(或类似于其他语言)
例如:
- 来自用户输入的数据
- 您在数据库中存储RAW的数据(这是最好的方式),并且您正在使用新的sql语句
- 来自未知/其他来源的数据
分别是:
- 一定不要申请两次(以正确保存数据)

答案 2 :(得分:1)

当您不确定字符串中包含的内容时,这很重要。 这意味着用户输入。

您可能还想考虑使用PDO转移到预准备语句。

答案 3 :(得分:0)

您应该在SQL查询中插入的任何变量上使用它。

应该清理所有不是文字字符串的内容。如果从表单,数据库或其他任何东西中获取它并不重要,如果它不是常数,那么你应该清理它。

答案 4 :(得分:-2)

你问题中引用的句子是真的 所有其他答案都是错误的。

每次要在SQL查询中添加带引号的字符串时,都必须始终将其转义 这是你必须使用mysql_real_escape_string()的唯一情况。

PS。我无法相信这个问题仍然存在,而且还有所有答案。

Stackoverflow是一个非常奇怪的地方。