我正在尝试通过POST从Micropython控制器将一些Json格式的数据发送到PHP页面,然后再发送到mySQL数据库。我遇到的问题是PHP代码没有从Json数据中读取值,因此没有将其插入数据库中。
目前,似乎数据已成功以正确的格式发送到PHP页面。这是下面的代码:
将数据发送到php页面的Python代码:
data = '{"DeviceName": 1, "Humidity": %.2f, "Temperature": %.2f }'%(hum,temp)
headers = {'content-type': 'application/json'}
print(data)
res = urequests.post('http://192.168.1.187/insert.php', json=data, headers=headers)
print(res)
这是要发送的JSON字符串:
{"DeviceName": 1, "Humidity": 36.88, "Temperature": 27.99 }
PHP代码:
$server = "localhost";
$username = "admin";
$password = "passw";
$db = "test";
$dbCon = new mysqli($server, $username, $password, $db) or die("Unable to Connect");
$response = array();
$res=array();
$jsonRaw = file_get_contents('php://input');
$json = json_decode($jsonRaw);
if($json!=null){
$temperature = $json->Temperature;
$device = $json->DeviceName;
$sql = "insert into hostdata (HostID, DandT, Temp) values ('$device', now(), '$temperature')";
if(mysqli_query($dbCon, $sql)){
$svrResp["code"] = "1";
$svrResp["message"] = "Sucessfully Connected";
echo json_encode($response);
}else{
$svrResp["code"] = "2";
$svrResp["message"] = mysqli_error($dbCon);
echo json_encode($response);
}
}else{
echo "JSON data error";
}
mysqli_close($dbCon);
?>
这应该将deviceName(实际上是一个数字)和温度值插入sql语句,并更新数据库。但是,它会触发sql插入语句,插入时仅HostID和Temperature值均为0。我想念什么吗?
任何帮助将不胜感激!