【问题标题】:How do I store line-breaks from textarea properly in mySQL database?如何在 mySQL 数据库中正确存储 textarea 中的换行符?
【发布时间】:2011-03-09 04:59:51
【问题描述】:

我在提交和存储 textarea 内容时遇到了这个问题,我一直无法找到合适的解决方案。

我有一个表单,带有一个名为“description”的 textarea 字段。

当我提交带有多行文本的表单时,例如

1号线
2号线

3号线

它以更多新行存储在 mySQL 数据库中。它变成:-

1号线

2号线

3号线

当我用 phpmyadmin 检查数据库时。

VARCHAR 和 TEXT 类型我都试过了,都是一样的。我需要做什么才能准确存储 textarea 内容?

相关的codeigniter行是 aRow[$strField] = strip_tags($this->input->post($strField)); $this->db->insert($this->strTable, $aRow);

$strField 将是我的 textarea 字段,而 insert 是一个 CI 函数。

【问题讨论】:

  • 你用过mysql_real_escape_string函数吗?
  • 我相信 CI 已经处理好了

标签: php mysql forms codeigniter textarea


【解决方案1】:

好的,我找到了答案。我正在使用 CI 2.0,这是一个已经报告的现有错误。 https://bitbucket.org/ellislab/codeigniter/issue/332/newlines-in-textareas-are-duplicated

快速修复如下(在/system/core/Input.php中查找文件)

//$str = str_replace(array( "\r\n", "\r"), PHP_EOL, $str);
$str = preg_replace('/(?:\r\n|[\r\n])/', PHP_EOL, $str);

希望这对那里的人有所帮助。

【讨论】:

  • 我真的应该跟上时代 - 但这让我今天。正确的修复是here,它应该在版本 2.0.2
【解决方案2】:

似乎在每个新行之后都添加了一个换行符。这与数据如何插入数据库有关。愿意分享该代码吗?

【讨论】:

  • 我正在使用 codeigniter。相关行是 $aRow[$strField] = strip_tags($this->input->post($strField)); $this->db->insert($this->strTable, $aRow);
  • 不幸的是,我不熟悉 codeignighter。我怀疑问题出在 $this->input->post() 上,但我只能这么说。我建议编辑原始帖子以包含这行代码 - 当 codenighter pro 出现时这将非常有帮助!
【解决方案3】:

尝试在数据库中使用 \n 并在显示记录时使用 nl2br()

for more

【讨论】:

  • 显示记录很好,是的,我使用 nl2br。问题是当我将表单数据提交到数据库时(它已经与额外的行一起存储)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
相关资源
最近更新 更多