在 MySQL 表中同时插入和更新转义字符、单引号和双引号
Posted
技术标签:
【中文标题】在 MySQL 表中同时插入和更新转义字符、单引号和双引号【英文标题】:insert and update escape charcter, simple and double quotes in the same time in a MySQL table 【发布时间】:2012-12-11 01:13:50 【问题描述】:我担心在 mysql 表 w 中插入文本。 我必须插入/更新包含 / " 和 ' 等字符的文本
只有在启用 NO_BACKSLASH_ESCAPES SQL 模式时才能插入转义字符 /。干扰字符 " 和 ' 请参阅此链接 http://dev.mysql.com/doc/refman/5.1/en/string-literals.html#character-escape-sequences
如果有人能解释一下 mysql_real_escape_string() 我不会低调
我想找一个纯mysql的解决方案 我没有使用 php。我在这里要做的是“模拟”内容管理系统:我即将编写一个 C# 编码的解决方案来管理不同形式的内容(文章、类别、标签等)并生成 .html 文件, MySQl 数据库在我的计算机中是本地的,接下来我会将 .html 文件上传到服务器。
我这样做是为了确保我所有的 html 页面都是 html 有效的,并且因为我不信任任何现有的解决方案(不仅涉及编码,而且在一般生活中)
请帮忙
【问题讨论】:
【参考方案1】:每个 php db 连接扩展(mysql, mysqli, pdo)都有一个特殊的方法来安全查询sql注入,当你使用mysql扩展时,强烈建议使用mysql_real_escape_string()
函数使查询中使用的所有变量安全,它是使用最广泛的功能。我认为没有任何纯粹的解决方案(当您在 php 中使用 mysql 扩展时)。
来自 php.net:
mysql_real_escape_string() - 转义特殊字符 unescaped_string,考虑到当前字符集 连接,以便将其放置在 mysql_query() 中是安全的。
【讨论】:
mysql_real_escape_string() 与注入无关。它不会使任何字符“安全”。它不应该用于“所有变量”。它不是“强烈推荐”,因为它只是一个字符串格式化工具:所以,它不是“推荐”但应该用于格式化字符串,但不应该用于其他任何东西 那么告诉我在使用 mysql 扩展时如何制作安全的变量?还有其他方法吗?? 我没有使用 php。我在这里要做的是“模拟”内容管理系统:我即将编写一个 C# 编码的解决方案来管理不同形式的内容(文章、类别、标签等)并生成 .html 文件, MySQl 数据库在我的计算机中是本地的,接下来我会将 .html 文件上传到服务器。我这样做是为了确保我所有的 html 页面都是 html 有效的,因为我不相信任何现有的解决方案(不仅涉及编码,而且在一般生活中)【参考方案2】:任何字符串数据都可以插入到 SQL 查询中,如果按照 2 条规则格式化
用引号括起来(最好是单引号) 通过mysql_real_escape_string()传递如果两个规则都遵循,那么无论是斜线、引号还是任何字符,都不会出现任何问题。
根据您的问题,/
在 MySQL 中没有特殊含义。 \
是转义字符。它也可以被另一个反斜杠转义。
$str = 'slashes \ quotes \' or whatever " else symbols';
var_dump($str);
$str = mysql_real_escape_string($str);
$sql = "INSERT INTO table SET str='$str'";
【讨论】:
是的,我很抱歉转义字符是 \ 而不是 /,谢谢 能否请您更具体地了解如何实施您的解决方案,因为我不是 mysql 专家。请注意,我使用的不是 php 或类似的解决方案,只是 MySQL 。谢谢以上是关于在 MySQL 表中同时插入和更新转义字符、单引号和双引号的主要内容,如果未能解决你的问题,请参考以下文章