【问题标题】:After the insert string into the MySQL, character '\n' (newline) disappears将字符串插入 MySQL 后,字符 '\n'(换行符)消失
【发布时间】:2017-03-09 10:45:20
【问题描述】:

我想在 DB 中插入一个类似的字符串,但插入字符“\n”后消失,在 DB 中我将其视为新行。

我发送的字符串:

[{"Index":0,"Title":"headline","Content":"first line\nsecond line","Class":"colour1"}]

为了插入数据库,我使用这个 PHP 代码和我通过 HTML 表单发送的字符串和方法 POST。

if ( $action == "save") {
  $notes = $_POST['notes'];
  $sql = "INSERT INTO notes (notes) VALUES ('$notes')";
  if (mysqli_query($conn, $sql)) {
    $saved = "Saved...";
  } else {
    $saved =  "Error: " . mysqli_error($conn);
  }
}

当我在通过表单发送之前打印变量“$_POST['notes']”或“$notes”时,字符串是可以的,在发送表单之后和插入数据库之前,字符串也是可以的。

【问题讨论】:

标签: php mysql string newline sql-insert


【解决方案1】:

从数据库中获取结果时,使用 nl2br()

【讨论】:

  • Function nl2br() 在字符串中的所有换行符之前插入 HTML 换行符,但我想用“\n”字符返回我插入的相同字符串,没有换行符。是否有类似的功能可以将新行替换为字符 \n?
【解决方案2】:

问题是由于在 MySql 中将 '\n' 解释为 '\\n'。为避免这种转换,请尝试以下方法: 在插入数据库之前更改您的查询字符串,如下所示:

    $notes = $_POST['notes'];
    //This line will replace '\n' with HTML Coded Character Set, but will be interpreted in HTML as \n itself. 
    $notes = str_replace('\n', '\n', $notes);
    $sql = "INSERT INTO notes (notes) VALUES ('$notes')";

【讨论】:

    【解决方案3】:

    "\n" 是下一行语句,MYSql 把它作为下一行是正确的。必须使用 nl2br($value) 使其显示为 html 网页的下一行。

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      相关资源
      最近更新 更多