台灣最大程式設計社群網站
線上人數
835
 
會員總數:245218
討論主題:189090
歡迎您免費加入會員
討論區列表 >> PHP >> textarea換行 存入MySQL資料庫
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
textarea換行 存入MySQL資料庫
價值 : 50 QP  點閱數:3350 回應數:9

樓主

Leo
門外漢
0 20
920 61
發送站內信

請問各位版友

小弟我有個textarea

當使用者填的內容有換行時,該如何將"換行"也存入MySQL資料庫

並且在讀取時能夠正常顯示換行


目前程式流程大致如下
Query.php查出結果,使用者可以編輯特定欄位,並在Update至資料庫

Query.php



Update.php



Google了許多
換行還是一直帶不出來

再請各位協助解惑

感謝 !

搜尋相關Tags的文章: [ 換行 ] , [ php ] , [ MySQL ] ,
本篇文章發表於2016-08-09 16:11
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
首先,你要先理解一件事。在什麼地方用什麼樣的換行。

你光在第二支程式的23行


就處理不對了。因為一般來說。換行的文字是會用\n來處理
正常你該用mysqli_escape_string來處理要儲存的字串。防止程式的錯誤。

再來就是~~~文字型態的換行符號。對html來說是不被接受的。除非你是將其放到textarea文件盒上才行。
只有這才可以接受文件型態的換行。
本篇文章回覆於2016-08-09 16:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Leo
檢舉此回應
版主你好

我用上述那行
str_replace("\\","",$updatevalue)
並非是要特別處理換行

主要是發現從Query.php拋過來的內容

在'前面都有個\

所以我用str_replace把\去除掉.....

才可以正常執行SQL語法


至於您提到的mysqli_escape_string用法

是可以處理換行的問題嗎???

再請指教

感謝!
本篇文章回覆於2016-08-09 17:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
前置\就是一種拖位符。目的就是要防止你的程式錯誤。
而且正常處理的模式,是因該從來源處理的。
本篇文章回覆於2016-08-10 09:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

迷路
捐贈 VP 給 迷路 檢舉此回應
我個人倒是沒有在資料庫儲存時特別對換行做處理
我猜測樓主會發生問題主要是因為用AJAX的方式將資料傳送到儲存頁
從樓主的原始碼推測應該是有用JQuery,那麼AJAX也可以直接用JQuery的方式,就能避免問題
下面這個範例測試看看
test.html

test.php


另外,星空大都給出明確的函數"mysqli_escape_string"
自己去Google一下用處和如何使用不難吧
本篇文章回覆於2016-08-10 10:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

Leo
檢舉此回應
因為在來源php,我印出值時沒有出現\

而是在接收端php才在'前面帶出\

所以我直覺就直接在接收端處理

後來參考了另一個作法將接收到的\排除掉



請問版主

關於textarea換行的部分

可以怎麼解會比較妥當

目前程式流程大致如下
Query.php查出結果,使用者可以編輯特定欄位,使用者點選Update按鈕執行Update.php將欄位資訊更新至資料庫

試了許久還是無法將"換行"存入資料庫中...

是跟XMLHttpRequest或是GET的方式有關嗎?!


謝謝!
本篇文章回覆於2016-08-10 10:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Leo
檢舉此回應
感謝迷路大的協助!!!

改成AJAX就可以了!!!

可是我不懂為什麼這兩種做法上的差異

為何一個可以一個不行...

謝謝!
本篇文章回覆於2016-08-10 10:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
實在不太想明白的告訴你的,讓你自已去模索。

我再丟幾個問題給你去研究好了

1.你有說到了一個重點,get傳送是否可以傳換行的符號?
要知道你傳的是textarea元件的內容。但你是否有思考過。是否可以傳換行的符號??用網址的方式??
當然,如果是用表單的方式,是一定可以傳送的。
但因為你想要用ajax的處理模式。且採用的還是Request傳送的模式。是否有思考過能否傳送呢??

2.編碼轉換的必要??
你在9~13行做了一個編碼轉換。我想你的\'因該就是這堥茠滿C
為何會需要做編碼轉換這點我就非常的不解了。
今天除非是你的來源點不受你控制的。不得已才需要這樣處理。
要不然實在沒這個必要才對。也無需判斷。
且用mb_detect_encoding做判斷會有很多誤差存在。如果確定來源的字串是自已寫的。
不需要做此處理才對。

提示你一下。Request傳送有時會使用htmlcode代碼的方式傳給php。如%20%ED這類的代碼。
去研究 htmlspecialchars 這個函數
搞不好你就解決你的問題


本篇文章回覆於2016-08-10 10:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Leo
檢舉此回應
感謝版主回應

關於第一點

我GOOGLE了一下
找到了encodeURIComponent()的作法
(http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp)


Query.php加上encodeURIComponent


但是這個作法好像不能處理- _ . ! ~ * ' ( )符號

所以在Update.php加上magic_quotes的判別,將'前面的\去除掉



不知上述的作法是否妥當

不過確實可以成功存取出換行



關於第二點

這那是之前在GOOGLE找方法的時候弄上的

確實在整個流程中沒有用處

也將它移除了



不過參考迷路的指點

兩者實際的差異

一個可以一個不行

還是不太清楚使用上的限制

本篇文章回覆於2016-08-11 09:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

Leo
檢舉此回應
上述的顏色與粗體顯示原始代碼了@@

應該為
xmlhttp.open("GET","Update.php?updatevalue="+encodeURIComponent(updatevalue),true);
本篇文章回覆於2016-08-11 09:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.