【发布时间】:2017-06-24 23:25:30
【问题描述】:
我正在尝试在 PHP 中构建一个“API”,它可以采用 JSON 数据数组,将其转换为 PHP 数据,然后更新 MySQL 数据库。将数据直接发布到脚本可以正常工作,就像通过 cURL 运行它一样,但是在使用 Google Chrome 的“高级 Rest Client”应用程序时,我似乎无法获得响应。
我收到一条 Status: 200 OK 消息,但 Raw/Parsed 响应只显示“无效数据数组”。
这是有问题的脚本:
<?php
$api = json_decode($_POST['api'], true);
$api['ExhibitorData'] = array_values($api['ExhibitorData']);
$data = $api['ExhibitorData'][0];
$exhibitor_id = $data['exhibitor_id'];
require_once 'config-api.php4'; // database connection
// get some data based on $exhibitor_id
$do_update = mysql_query("UPDATE table SET ... WHERE exhibitor_id = $exhibitor_id");
if (!$do_update)
{
http_response_code(404);
die(mysql_error());
}
$do_another_update = mysql_query("UPDATE another_table SET ... WHERE exhibitor_id = $exhibitor_id");
if (!$do_another_update)
{
http_response_code(404);
die(mysql_error());
}
$log = mysql_query("INSERT INTO log SET exhibitor_id = $exhibitor_id, ip_address = '" . $_SERVER['REMOTE_ADDR'] . "', updated_at = NOW()");
header('Content-Type: application/json; charset=utf-8');
echo json_encode(array(mysql_insert_id() => 'OK'));
mysql_close();
按照有关创建自己的 REST API(即this one)的在线教程,我似乎做的一切都是正确的,但我似乎无法获得回应。
还有什么我应该做的吗?
编辑:这是我传递给脚本的 JSON 字符串的结构:
{
"ExhibitorData": {
"1": {
"exhibitor_id": 1,
...
}
}
}
【问题讨论】:
-
您在上次查询调用中也缺少错误处理。这似乎是错误的,因为在 INSERT 语句中,您不使用 SET,而是使用 VALUES。与问题不太相关,但是您使用的是什么 php 版本?我对 .php4 扩展名有点困惑。此外,您不应使用已弃用的 mysql_* 扩展名。相反,请使用改进的mysqli extension。
-
@TanuelMategi 哦,我们在 v5.x 上,但是服务器上到处都是 .php4 扩展名和大约十年前以前的开发人员的 mysql_* 代码。这只是我必须处理的事情。
-
忽略我说你应该使用
VALUES而不是SET的地方,我再次查找语法,显然SET也是有效的:S但仍然进行错误处理;)