【问题标题】:Access current users username in javascript在javascript中访问当前用户的用户名
【发布时间】:2017-10-14 08:47:13
【问题描述】:

我有一个从“SHOW tables”查询中获得的对象。不幸的是,我得到一个对象内部的数组,其名称会根据用户登录的内容而变化(例如 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 $result 给了我:
Object { Tables_in_kazura: "drinks" }
Object { Tables_in_kazura: "food" }

以及用户(这里的用户是 kazura)在他的表格中还有什么。

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

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

【问题讨论】:

  • 您有任何相关代码要分享吗? (请参阅minimal reproducible example。)
  • 您已经将数据结果放入输出变量中,因此您可以随意命名。因此,您可以使用 console.log('Name_whatever_you_want' + output.categories[i]) 代替 console.log(data[i])。如果我误解了您的问题,请告诉我。
  • 对不起,代码 sn-p 粘贴得很差。我现在删除了所有不必要的不​​起作用的部分。
  • 由于您的对象键是动态的,您是否在访问类别时遇到问题?如果是这样的话,看看这个 - stackoverflow.com/questions/675231/…。否则,请向我们提供预期的输出,以便您遇到问题。

标签: javascript php html mysqli


【解决方案1】:

我想出了一种在 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 查询。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-28
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多