作者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)
1F:推 Darkland:用 prepared statement 或是用 $mysql->real_escape_stri 12/30 00:08
2F:→ Darkland:ng(json_encode(...)) 12/30 00:09