在javascript

时间:2017-05-15 14:08:59

标签: javascript php html mysqli

我有一个来自“SHOW表”查询的对象。不幸的是,我得到一个对象内部的数组,其名称会根据用户的登录情况而变化(例如data [1] .Tables_in_ kazura )。我怎样才能访问用户登录的内容,甚至更好地将结果从PHP重命名,从Tables_in_xxx到我想要的任何内容?

$.getJSON("php/loadCategories.php", function(data) {
    for (let i = 0; i < data.length; i++) {
      console.log(data[i]);
    }
});

这是我的PHP

$sql = "SHOW tables";

    $rows = $db->query($sql);
    $length = $rows->num_rows;



    $result = array();
    for ($i = 0; $i < $length; $i++) {
        $row = $rows->fetch_assoc();
        array_push($result, $row);
    }

    echo json_encode($result); 

echo $结果给了我:  
Object { Tables_in_kazura: "drinks" }
Object { Tables_in_kazura: "food" }

以及用户(这里的用户 kazura )的其他任何东西都在他的表格中。

由于它基于用户名,因此Tables_in_ USERNAME 会有所不同,我不知道如何访问其中的数据。

最佳解决方案是echo json_encode($result);返回Object { categoryname: "drinks" }等等,无论用户登录了什么

2 个答案:

答案 0 :(得分:0)

如果这些表都具有相同的结构,那么您可以使用原始SQL,但实际上并不建议这样做,因为它会让您受到攻击。问题似乎是您每个用户使用一个表而不是遵循关系约定。但作为简短的回答,您无法在已清理的SQL查询中执行您正在寻找的内容,因为不支持动态表名。

答案 1 :(得分:0)

我找到了一种在javascript中获得我想要的结果的方法。它并不漂亮,但它确实有效。

let propertyName = Object.keys(data[1]).toString();

//Rename the query from Tables_in_USERNAME to categoryname
data = data.map(function(obj) {
  obj['categoryname'] = obj[propertyName];
  delete obj[propertyName];
  return obj;
});

我将所有对象键重命名为categoryname,而不是更改SQL查询。