<?php
    ini_set("error_reporting","E_ALL & ~E_NOTICE");
/*连接数据库*/
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$zz = ('$_POST[location]','$_POST[oxygen]','$_POST[negative]','$_POST[temp]','$_POST[humidity]','$_POST[pm]');
$mz = json_decode($zz);
mysql_select_db("emp", $con);
$sql="INSERT INTO tianqi (location, oxygen, negative, temp, humidity, pm)
/*通过$_post变量从表单中取回值*/
VALUES($zz)";    if (!mysql_query($sql,$con))
       {
            die('Error: ' . mysql_error());
     }
echo "1 record added";mysql_close($con)
请问下我这个代码对吗, 服务器需要接收从客户端传来的json数据  
客户端传来的数据类型是这样的:{"id":"1","location":"汉字","oxygen":"3.33","negative":"23.2","humidity":"22","temp":"2.33","pm":"6"}

解决方案 »

  1.   

    你的$zz,没看过这样的写法我猜应该是如下$zz = json_decode($_POST['zz'], true);
    //$_POST['zz']为你接收json的值$sql = "INSERT INTO tianqi (location, oxygen, negative, temp, humidity, pm) values ('".$zz['location']."')";
    //后面的值,自己加上
      

  2.   

    $mz = json_decode($zz);  这个之后  $mz就是一个数组了  取数组里面的值就行了啊 
      

  3.   

     
     @ayzen1988  可是需要先接收客户端传来的值啊  该怎么接收客户端传来的值然后赋值在$zz上
    是这样吗 $zz = json_decode('$_POST[location]','$_POST[oxygen]','$_POST[negative]','$_POST[temp]','$_POST[humidity]','$_POST[pm]', true);
      

  4.   

    {"id":"1","location":"汉字","oxygen":"3.33","negative":"23.2","humidity":"22","temp":"2.33","pm":"6"}这是一个JSON字符串,是一个值,应该是赋给一个值传给你的,能和对方联系的话,和对方联系下,不行就print_r($_POST);看里面的值,别怕麻烦
      

  5.   

    @u012228558  print_r($_POST); 打印不出来
      

  6.   

    $s = file_get_contents('php://input');
      

  7.   

    请问如何判断这里获取到的JSON来源?如果不判断,任何地方都可以模拟提交,如何限制为指定域名提交的才有效呢?
      

  8.   

    请问如何判断这里获取到的JSON来源?如果不判断,任何地方都可以模拟提交,如何限制为指定域名提交的才有效呢?可以从提交过来的header里看到提交的域名,你把域名取出来,然后你定义一个数组保存你允许提交的域名,再判断提交的域名在不在数组里面,如果存在再执行代码,不存在就return错误信息,怎么从header取域名具体看这里https://blog.csdn.net/ahaotata/article/details/84999015
      

  9.   

    你把这个打印一下就知道了 $_SERVER;