2017-03-09 1264 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網頁中的下一行。