【问题标题】:Why mysql is not storing data after "#" character?为什么mysql在“#”字符后不存储数据?
【发布时间】:2010-04-29 09:10:09
【问题描述】:

我制作了一种包含富文本编辑器的表单。我正在尝试将数据存储到数据库中。
现在我主要有两个问题..

1) 只要字符串包含“#”(基本上当我尝试更改字体颜色时)字符,那么它不会存储“#”之后的字符。而且它也不存储“#”字符。

2) 虽然我尝试过....在 javascript 中

html.replace("\"","'");

但它不会将双引号替换为单引号。

【问题讨论】:

  • 如何将数据发送到服务器和数据库?
  • 请显示一些相关代码,您将字段内容存储到数据库中。

标签: php javascript mysql rich-text-editor


【解决方案1】:

我们需要查看一些代码。我的感觉是你在某处错过了一些重要的逃生步骤。特别是:

只要字符串包含“#”(基本上是当我尝试更改字体颜色时)字符

向我暗示,您可能会将字符串粘贴到这样的 URL 中:

var url= '/something.php?content='+html;

当然,如果html 包含# 符号,您就会遇到问题,因为在:

http://www.example.com/something.php?content=<div style="color:#123456">

# 开始一个名为 #123456"&gt; 的片段标识符,就像您将 #section 放在 URL 的末尾以转到 HTML 文件中名为 section 的锚点时一样。片段标识符纯粹是客户端,不会发送到服务器,服务器会看到:

http://www.example.com/something.php?content=<div style="color:

但是,这远不是上述问题的唯一问题。空格、&lt;= 在URL 中同样无效,而其他字符如&amp; 也会混淆参数解析。要将任意字符串编码为查询参数,您必须使用encodeURIComponent

var url= '/something.php?content='+encodeURIComponent(html);

这会将# 替换为%35,对于其他带外字符也是如此。

但是,如果这确实是您正在做的事情,那么在任何情况下,您都不应该将任何内容存储到数据库中以响应 GET 请求,也不应该依赖 GET 来传递可能很大的内容。请改用 POST 请求。

【讨论】:

    【解决方案2】:

    您的数据库代码似乎在做一些非常奇怪的事情。你能展示你用于将字符串存储到数据库的实际代码吗?

    # - 字符是创建评论的常用方法。也就是说,从# 到行尾的所有内容都将被丢弃。但是,如果您要存储到数据库的代码是正确的,那应该没关系。

    Javascript 不是处理引号字符转换的正确位置。正确的位置是在服务器端。

    【讨论】:

      【解决方案3】:

      如您所愿....
      我试着重播你……我试着说出我做了什么……

      1)在我这样写的html表单页面的客户端..

      html = html.trim();    // in html, the data of the rich text editor will come.
      document.RTEDemo.action = "submit.php?method='"+ html.replace("\"","'") + "'"; 
      \\ i had done replace bcz i think that was some problem with double quotes.
      

      现在在 submit.php 上,我的浏览器网址是这样的...

      http://localhost/nc/submit.php?method='This is very simple recipe.<br><strong style='background-color: #111111; color: #80ff00; font-size: 20px;">To make Bread Buttor you will need</strong><br><br><blockquote><ol><li>bread</li><li>buttor</li></ol></li></blockquote><span style="background-color: #00ff80;">GOOD.</span><br><br><br><blockquote><br></blockquote><br>'
      


      2) 在 submit.php ........我只是简单地写了这个

      echo "METHOD : ".$_GET['method'] . "<br><br>";
      $method = $_GET['method'];
      

      现在我上半部分的答案是这样的……

      METHOD : 'This is very simple recipe.
      

      现在我想存储 URL 的全部细节......但它只是存储......

      This is very simple recipe.
      

      【讨论】:

      • 您需要'method='+encodeURIComponent(html)。请参阅我的答案以获得解释。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      相关资源
      最近更新 更多