【问题标题】:How to properly escape a string via PHP and mysql如何通过 PHP 和 mysql 正确转义字符串
【发布时间】:2011-08-15 23:06:21
【问题描述】:

有人可以解释在字符串上使用 mysql_real_escape_string 或在列周围包装 `` 之间有什么区别。

例如"insert into table (``column``) values ('$string')"

$escapestring = mysql_real_escape_string($string);
 "insert into table (column) values ('$escapedstring')"

这两者有什么区别,我应该使用什么?谢谢。

【问题讨论】:

标签: php mysql html database escaping


【解决方案1】:

反引号`和单引号'之间有区别。

反引号旨在转义可能与 MySQL 保留字冲突的表和字段名称。如果我有一个名为date 的字段和一个类似SELECT date FROM mytable 的查询,我需要避免使用date,这样当MySQL 解析查询时,它会将我对date 的使用解释为字段 而不是数据类型 date

单引号' 用于文字值,如SELECT * FROM mytable WHERE somefield='somevalue'。如果somevalue 本身包含单引号,则需要对它们进行转义以防止引号文字过早关闭。

【讨论】:

    【解决方案2】:

    这两者根本不相关(据我所知)

    来自手册:http://php.net/manual/en/function.mysql-real-escape-string.php

    转义特殊字符 未转义字符串,考虑到 的当前字符集 连接,以便安全放置 它在 mysql_query() 中。

    所以本质上它的作用是,它将转义进入 mysql 查询不安全的字符(这可能会破坏或使查询格式错误)

    所以o'reily 会变成o\'reily

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2011-01-05
      • 2019-07-28
      • 2014-08-02
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      相关资源
      最近更新 更多