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

最佳答案

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

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

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

09-25 18:24
查看更多