【发布时间】:2016-11-15 08:17:32
【问题描述】:
我正在尝试处理来自网络服务的 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');";
然后,每次 web 服务调用我的 PHP 时,都会在我的表中新行的正确位置添加“十六”。这就是我知道我正在接收数据的方式。
注意:我试图简单地将 $obj 添加到我的表中,只是为了查看返回的数据格式,然后再尝试正确解析它并将所有内容放在它所属的位置。
我在这里做错了什么?我认为问题出在 ($json = file_get_contents('php://input');),但不知道还能尝试什么。
谢谢。
【问题讨论】:
-
您不能将 PHP 对象存储到 mysql 表列中。
$obj = json_decode($json);的结果是 PHP 对象而不是字符串 -
在查询代码中添加一些错误检查,您可能会看到有用的错误消息。
-
你不能用
$_POST['latitude'];得到值吗?我猜 JSON 不允许? -
@ntgCleaner 认为这可能有效,它确实成功地向数据库添加了一个新条目,但它完全是空的。