$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();
一切正常。

解决方案 »

  1.   

    你的$username从 xml拿出来之后 是个对象吧 你换成 $data['username'] = (string)$username 应该也是可以的 毕竟那是个 对象
      

  2.   

    var_dump($postObj);
    贴出结果
      

  3.   

    //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) { } } 
      

  4.   

    建议你把sql语句弄出来看一下应该就晓得了
      

  5.   

    $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();
      

  6.   

    这个地方拿到的是一个对象$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
      

  7.   

    $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转数组