thinkphp中就6行代码,想了半天,请高手指点

jetzuojetzuo 2018-12-17 05:10:57
$content="<xml><ToUserName><![CDATA[gh_c847b85d61a7]]></ToUserName><FromUserName><![CDATA[ofLpU0TQOLYHMtjbQvKotzegLFXA]]></FromUserName><CreateTime>1545011792</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event><EventKey><![CDATA[]]></EventKey></xml>";

$postObj = simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);
$username=$postObj->FromUserName;
$data["content"]=$username;
echo $data["content"];
M("test")->data($data)->add();


结果:
echo $data["content"]; //打印没有问题,显示ofLpU0TQOLYHMtjbQvKotzegLFXA,但是test数据库中content显示空
如果换成
$data["content"]=trim($username);

$data["content"]=(string)$username;
M("test")->data($data)->add();成功执行,test数据库中content插入ofLpU0TQOLYHMtjbQvKotzegLFXA正常。

大家知道啥问题么?


另外,如果换成数组:
$arr=array("FromUserName"=>"maolian99","company"=>"shanghaimaolian8888");
$username=$object["FromUserName"];
$data["content"]=$username
M("test")->data($data)->add();
一切正常。

...全文
722 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39124524 2019-04-10
  • 打赏
  • 举报
回复
代码格式化都不会谁给你看
kis龍 2019-01-11
  • 打赏
  • 举报
回复


$postObj = simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);
$username=$postObj->FromUserName;
$data["content"]=$username;
echo $data["content"];
var_dump($data); // 看看是数组还是对象
M("test")->data((array)$data)->add(); // data转数组
  • 打赏
  • 举报
回复
好像是你的数据库中的字段类型,可以去看看 长度 类型 存入进去的数据是否跟数据库的字段相匹配。
小罗的小刘 2019-01-03
  • 打赏
  • 举报
回复
对象。。。。不可以操作
lanshs 2019-01-03
  • 打赏
  • 举报
回复
这个地方拿到的是一个对象

$username=$postObj->FromUserName;
$class = get_class($username); // $class: "SimpleXMLElement"



也就是说 $postObj 是 SimpleXMLElement 对象,$postObj->FromUserName 拿到的也是 SimpleXMLElement 对象

var_dump($username);
//class SimpleXMLElement#417 (1) {
// public ${0} =>
// string(28) "ofLpU0TQOLYHMtjbQvKotzegLFXA"
//}

TP插入数据不认这个对象,所以要手动转成 string
ayzen1988 2019-01-03
  • 打赏
  • 举报
回复
$post = (array) simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA); $username=$post['FromUserName']; $data["content"]=$username; echo $data["content"]; M("test")->data($data)->add(); 或者 M("test")->data((array)$data)->add();
jetzuojetzuo 2018-12-19
  • 打赏
  • 举报
回复
还是没人知道么?
喜爱cpp 2018-12-19
  • 打赏
  • 举报
回复
你这个是对象,对象是不支持存数据库的;先转化以下,转化为数组
s7147998 2018-12-19
  • 打赏
  • 举报
回复
字段太长了吧
下雨的声音丶 2018-12-17
  • 打赏
  • 举报
回复
建议你把sql语句弄出来看一下应该就晓得了
jetzuojetzuo 2018-12-17
  • 打赏
  • 举报
回复
//var_dump($postObj);结果如下

object(SimpleXMLElement)#6 (6) { ["ToUserName"]=> string(15) "gh_c847b85d61a7" ["FromUserName"]=> string(28) "ofLpU0TQOLYHMtjbQvKotzegLFXA" ["CreateTime"]=> string(10) "1545011792" ["MsgType"]=> string(5) "event" ["Event"]=> string(9) "subscribe" ["EventKey"]=> object(SimpleXMLElement)#7 (0) { } }
xuzuning 2018-12-17
  • 打赏
  • 举报
回复
var_dump($postObj);
贴出结果
kang#kang 2018-12-17
  • 打赏
  • 举报
回复
你的$username从 xml拿出来之后 是个对象吧 你换成 $data['username'] = (string)$username 应该也是可以的 毕竟那是个 对象

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧