精華區beta PHP 關於我們 聯絡資訊
$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
> -------------------------------------------------------------------------- < 作者: chaoms (小企鵝) 看板: PHP 標題: Re: [請益]直接將json塞進DB某筆資料欄位中 ? 時間: Sat Dec 29 17:49:14 2012 ※ 引述《azureshin (azureshin)》之銘言: : $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 mysql塞到資料庫時有 quote char...也就是你串sql cmd \ 符號被當跳脫字元吃掉了 不想管有什麼quote char的話..就直接 用prepare bind param 方式餵資料進去..就不會有這個問題 \uxxxx 這應該叫 Universal Character Name JAVA在用的..你可以用ICONV 轉減少一點字元數.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.170.238.54
azureshin:感謝, 正解 12/30 02:17