0

製品用の小さな API を設計しようとしています。MySQL データベースがあり、PHP で単純な GET/POST コマンドを作成するための小さなフレームワークを使用しています。

私が抱えている問題は、テーブルの列名を明らかにせずにデータベースからデータを公開する方法がわからないことです。たとえば、誰かがエンドポイントに GET リクエストを送信したとき、私は次のようにして JSON データを返します。

 $rs = mysql_query($sql);
 if($rs) $rsc = mysql_num_rows($rs);

 while($row = mysql_fetch_assoc($rs)) {
    $data[] = $row;
 }

header("HTTP/1.1 202 OK");
header("Access-Control-Allow-Origin: *");
header("Content-type: application/json", true);
echo json_encode($data);
exit;

(はい、mysql_* が悪い悪い悪いことを知っています。=) ほぼ 15 年前のコード ベース。変換する楽しい時間になるでしょう...)

この方法は素晴らしくシンプルですが、データベースからの列名が単純なサイトに表示されます (決して公開しないように常に努力してきました)。返されるものの例は次のとおりです。

[{"NewsID":"559110","Day":"10\/17\/13","UnixDT":"1382031900","Subject":"Testing formatting"},{"NewsID":"535214","Day":"09\/10\/13","UnixDT":"1378836900","Subject":"Check Template - use tempate from tempate mgr"},

この考え方は、一般向けの API に慣れる必要があるだけなのでしょうか。それとも、列名をキー名として使用しないデータを返すためのより良い方法はありますか。これまでにセミパブリック向けの API を作成したことはありません。そのため、ポイントやフィードバックは大歓迎です。

4

1 に答える 1

0

これを行うことができます。array_combineまたは、を使用して SQL を更新する必要があります。AS

$keys = array('a', 'b', 'c', ...);

while($row = mysql_fetch_assoc($rs)) {
    $data[] = array_combine($keys, array_values($row));
}
于 2013-11-04T21:46:47.737 に答える