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或者您需要使用更新您的 SQLAS

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

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