【问题标题】:line breaks in mysql the correct way?mysql中的换行符正确吗?
【发布时间】:2024-01-10 00:30:01
【问题描述】:

这似乎是一个重复的问题,但我从未找到一致的完整解决方案。其他帖子上的答案似乎在短时间内有效,然后随机中断。我确定我犯了一个菜鸟错误。

允许用户将文本输入 mysql 并正确回显换行符的最佳“完整”路径是什么。处理所有可能性,例如“返回键”、“输入键”、从单词或网站复制和粘贴,以及 á、'、" 等特殊字符。

当前设置:

MySQL 行:类型 - 文本,搭配 - utf8_unicode_ci

HTML:文本区域

PHP 提交:

$escaped = array_map('mysql_real_escape_string', $_POST); 
$escaped = stripslashes($escaped);

PHP 回显:

nl2br($textfield)

我不确定用户做了什么,但有时它仍会回显 nnn 而不是中断。

谢谢

*** 更新 ** 我一直在寻找完全错误的地方来弄乱这些。 我发现启用了魔术引号会导致换行符和特殊字符出现错误。 谢谢大家的帮助。

【问题讨论】:

  • 如何将数据写入数据库?有哪些功能?
  • Classic: mysql_query("INSERT... 但是我知道这很糟糕,并且正在将所有内容更新到 PDO

标签: php mysql special-characters line-breaks


【解决方案1】:

这是否会改善您的情况:

$escaped = array_map('mysql_real_escape_string', $_POST); 
$escaped = nl2br($textfield)
//$escaped = stripslashes($escaped);

编辑: 为什么要剥离斜线?

在删除斜杠之前,您可以搜索并使用换行符。您还可以使用PHP_EOL 特殊字符进行探索,但我认为这与\n\r\n 相同

对于其他阅读本文的人来说,mysql_已弃用,应替换为 MySQLi_

【讨论】:

  • 谢谢,我会试一试,我似乎无法自己重新创建它,因为它只发生在某些用户身上。
【解决方案2】:

您需要删除您的stripslashes($escaped)。 它将\n 更改为n\n\n 更改为nn

【讨论】:

  • 否则我似乎没有正确处理我的 ', ".. 吗?
  • 人们不直接输入\n..即使他们,它不会改变'\n'..example
  • 你试过了吗?你不应该stripslashesmysql_real_escape_string的结果@
  • @MF_it 您能否详细说明“处理不正确”,如果您不使用stripslahes,那么您的 incorrect 输出是什么?