我正试图处理来自web服务的post请求。它正在发送这样的http post请求:

{
"latitude":"12.232",
"longitude":"123.323"
}

它将发布到我服务器上的一个php文件中。我知道它肯定会打到文件上。但是,我没有得到数据。
在我的php中,我有这个(省略了一些东西:
$json = file_get_contents('php://input');
$obj = json_decode($json);
$mine ="sixteen"; //using this for a test

$sql = "INSERT INTO rr_emergency (random) VALUES('$obj');";
$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);

这不会改变我的数据库。
如果我这样做:
$sql = "INSERT INTO rr_emergency (random) VALUES('$mine');";

然后每次webservice调用我的php时,都会在表中的一个新行的右侧位置添加“16”。这就是我如何知道我在接收数据。
注意:我试图简单地在我的表中添加$obj,以便在我试图正确解析它并把它放在它所属的地方之前,返回它返回的数据格式。
我在这里做错什么了?我认为问题出在这里($json = file_get_contents('php://input');),但不知道还能尝试什么。
谢谢。

最佳答案

所以有几个问题

$obj = json_decode($json);

这将返回object。你想要一个array
$obj = json_decode($json, true);

那么你的PDO是不正确的
$sql = "INSERT INTO rr_emergency (random) VALUES(:val);";
$prep = $dbh->prepare($sql);
foreach($obj as $row) $prep->execute([':val' => $row]);

这将正确插入数据(使用准备好的语句)并循环json返回数据

10-04 11:31
查看更多