作者azureshin (azureshin)
看板PHP
標題[請益]直接將json塞進DB某筆資料欄位中 ?
時間Sat Dec 29 14:12:22 2012
$xml_array = array();
foreach($oXML->remarklist->remark as $oEntry){
array_push($xml_array,$oEntry);
}
$q="update table set remark='".json_encode($xml_array)."' where bid='1' ";
$mysqli->query($q);
這個問題卡很久
這是一個XML, 就假設是網誌的XML訂閱好了
一般來說, 資料在規劃時, 會將文章放一個table_A, 回覆的留言是另個table_B, 之後再
用文章id關聯.
但現在遇到特殊情形, 我希望將所有留言塞進一筆資料內, 也就是直接在文章table_A後
面再開一個欄位, 並將所有留言轉json後塞進去.
(先不論之後會遇到什麼問題, 但目前的需求大概就是長這樣, 希望我有表達清楚..)
回正題
remark是每篇回覆的母節點, 所以我想說先開一個array, 然後將remark丟進去, 這樣
remark之下的子節點也會跟著丟進去.
之後再對這array進行json_encode, 一口氣塞進去文章內.
遇到了兩個問題
1. 塞進去的中文字, 讀出來時就不是中文了, 是編碼過後的文字, 但也長得很怪, 感覺
不太像印象中的json_encode, 好像少了跳脫符號(這個\) ? (ex:
u9c81u8944u516cu59ecu5348 )
2. 從myadmin進去看該欄位時, 會發現雖然是json格式, 但不完整, 正確說法是會自行斷
行, 我猜跟第一點有關係.
-----------
我有嘗試過直接在網頁上echo json_encode($xml_array);
是標準的json, 有 \ 符號, 也不會自己斷行造成錯誤....
將頁面上顯示的json_encode($xml_array)結果透過myadmin貼進資料庫也沒問題
唯獨透過程式丟進去就會出現\消失的問題....
我的欄位格式是text
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.111.35.11
※ 編輯: azureshin 來自: 175.111.35.11 (12/29 16:34)
推 Darkland:用 prepared statement 或是用 $mysql->real_escape_stri 12/30 00:08
→ Darkland:ng(json_encode(...)) 12/30 00:09