2

我担心在 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 有效的,并且因为我不信任任何现有的解决方案(不仅在涉及编码时,而且在一般生活中)

请帮忙

4

2 回答 2

0

每个 php db 连接扩展(mysql、mysqli、pdo)都有一种特殊的方法来安全查询 sql 注入,当您使用 mysql 扩展时,强烈建议使用mysql_real_escape_string()函数来确保查询中使用的所有变量的安全,这是使用最广泛的函数. 我认为没有任何纯粹的解决方案(当您在 php 中使用 mysql 扩展时)。来自 php.net:

mysql_real_escape_string() - 转义未转义字符串中的特殊字符,考虑到连接的当前字符集,以便将其放在 mysql_query() 中是安全的

于 2012-12-24T18:20:00.530 回答
-1

如果根据 2 个规则格式化,则可以将任何字符串数据插入 SQL 查询

  • 它用引号括起来(最好是单引号)
  • 它通过 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'";
于 2012-12-24T18:18:49.297 回答