PHPでJSONデータ配列を使用してPHPデータに変換し、MySQLデータベースを更新できる「API」をPHPで構築しようとしています。データを直接スクリプトに投稿すると、cURLを実行するのと同じように正常に動作しますが、Google Chromeの「高度なレストクライアント」アプリケーションを使用しているときに応答が得られないようです。高度なレストクライアントで無効なデータ配列の応答
ステータス: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)の作成に関するオンラインチュートリアルに続いて、私は正しいすべてをやっているように見えるが、私のことができるようにしていないようです応答を得ます。
私は何かすべきことはありますか?
EDIT:これは私がスクリプトに渡していJSON文字列の構造です:
{
"ExhibitorData": {
"1": {
"exhibitor_id": 1,
...
}
}
}
また、最後のクエリ呼び出しでエラー処理が欠落しています。 INSERT文ではSETを使用せず、[VALUES](https://dev.mysql.com/doc/refman/5.7/en/insert.html)を使用するので、間違っているようです。 質問にはあまり関係ありませんが、どのPHPバージョンを使用していますか?私はちょっと.php4拡張で混乱しています。また、廃止予定のmysql_ *拡張子は使用しないでください。代わりに、改良された[mysqli extension](http://php.net/manual/de/book.mysqli.php)を使用してください。 –
@TanuelMategiああ、v5.x上ですが、サーバは10年ほど前の開発者の.php4拡張とmysql_ *コードに分かれています。それは私が対処しなければならないものです。 – mpdc
「SET」の代わりに「VALUES」を使うべきだと言ったところを無視して、構文をもう一度見て、明らかに 'SET'も有効です:Sまだエラー処理しています;) –