2017-03-09 414 views
1

我想在DB中插入一个类似的字符串,但插入字符“\ n”后消失,并在数据库中将其视为新行。将字符串插入MySQL后,字符' n'(换行符)消失

我发送的字符串:

[{"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 [‘笔记’]”或“$笔记”,该字符串是OK,发送表格后插入到数据库之前,该字符串是OK太。

+1

尝试:'str_replace('\ n',' ',$ _POST ['notes']);'http://stackoverflow.com/questions/8627902/new-line-in-text-area –

回答

1

在拿从数据库,使用nl2br()

+0

函数nl2br()在字符串中的所有换行符之前插入HTML换行符,但是我希望返回相同的字符串,而不是换行,并使用“\ n”字符。是否有类似的功能将新的行替换为字符\ n? – omfo

0

结果,就会出现问题,由于 '\ n' 的解释如在MySQL '\\ 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')"; 
0

“\ n”是下一行语句,它是正确的是,MySQL把它作为下一行。使用nl2br($ value)使其显示为html网页中的下一行。