API结果中的数据库列名称

时间:2013-11-04 21:38:20

标签: php mysql json api

我正在尝试为我们的产品设计一个小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,因此非常感谢任何积分或反馈。

1 个答案:

答案 0 :(得分:0)

您可以使用array_combine执行此操作,或者您需要使用AS更新SQL

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

while($row = mysql_fetch_assoc($rs)) {
    $data[] = array_combine($keys, array_values($row));
}