为什么 mysqli_escape_string 需要数据库连接?
why does mysqli_escape_string require a database connection?
为什么我在没有数据库连接的情况下不能使用 mysqli_escape_string
功能?
Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
它必须有连接才能知道数据库正在使用什么字符集,这样它才能使用正确的规则转义数据。
昆汀的答案归结为一个本质。
我还想补充一点,
- 正如 Quentin 已经提到的,字符集仅在活动连接的上下文中已知 - 并且对于转义至关重要。
- 通常,连接对象应该可用于需要它的代码的任何部分。每当您需要逃脱时,您很可能也需要使用连接。如果您的问题是 "the connection object is not reachable at this part of my code",那么您绝对应该解决这个问题!
- 请不要尝试在 PHP 中复制
mysqli_escape_string
的行为!这只会使其容易受到攻击者的攻击。不要以为将 "
转换为 \"
! 就那么简单
请仔细查看#2 和#3。问这个问题让我假设您的项目中存在某种架构问题。
为什么我在没有数据库连接的情况下不能使用 mysqli_escape_string
功能?
Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
它必须有连接才能知道数据库正在使用什么字符集,这样它才能使用正确的规则转义数据。
昆汀的答案归结为一个本质。
我还想补充一点,
- 正如 Quentin 已经提到的,字符集仅在活动连接的上下文中已知 - 并且对于转义至关重要。
- 通常,连接对象应该可用于需要它的代码的任何部分。每当您需要逃脱时,您很可能也需要使用连接。如果您的问题是 "the connection object is not reachable at this part of my code",那么您绝对应该解决这个问题!
- 请不要尝试在 PHP 中复制
mysqli_escape_string
的行为!这只会使其容易受到攻击者的攻击。不要以为将"
转换为\"
! 就那么简单
请仔细查看#2 和#3。问这个问题让我假设您的项目中存在某种架构问题。