我正试图处理来自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返回数据