【问题标题】:Getting entire content from table从表中获取全部内容
【发布时间】:2016-05-11 01:38:39
【问题描述】:

我有一个这样的表结构:

id,name,age,etc...

我想获取所有条目并以表结构将它们显示在我的网站上,就像它们在 MYSQL 表本身中组织一样:

| id  | name  | age |
| --- | ----- | --- |
| 1   | Peter | 23  |
| 2   | Susan | 34  |
| 3   | Tom   | 45  |

使用以下代码,我可以获得所有名称:

$query = "SELECT * FROM users"; 

if ($result = $link->query($query)) {
    while($row = $result->fetch_assoc()){
        echo "name: "  . $row['name'] . "<br />";
    }
}

这是结果:

name: Peter
name: Susan
name: Tom

但我需要用$row['name'] 分别指定每一列。如果有 >100 列,我需要指定每一列吗?

有什么方法可以在 JSON 响应中从我的表中获取所有数据(包括所有列名):

{"users":[
    {"id":"1", "name":Peter", "age":"23"},
    {"id":"2", "name":"Susan", "age":"34"},
    {"id":"3", "name":"Tom", "age":"45"}
]}

【问题讨论】:

  • 使用mysql_field_name从db中获取列名。
  • 只是一个旁注,但您正在执行两次查询。
  • 100 列可能是一个糟糕的表格设计
  • @jeroen:谢谢,我更正了。
  • @Dagon:我只是想指出,我有很多列,我正在寻找一种方法来加载它们,而不是指定每个名称。

标签: php mysql json mysqli


【解决方案1】:

是的,只需使用类似的东西:

 foreach($row as $colName => $colValue)

在你的 while 循环中。

【讨论】:

  • 谢谢,但请您提供一个小例子吗?
  • 当然。只需使用以下内容来增加您的 while 循环:while($row = $result-&gt;fetch_assoc()){ foreach($row as $colName =&gt; $colValue) { echo $colName . ": " . $colValue; } }
【解决方案2】:

你可以像这样使用foreach循环

foreach($result as $column=>$value)
{
   echo $column." : ".$value;
}

但是,您为什么要担心表中的 100 列?根据规范化,单个表中不会有这么多列。但即使你有,由于 column_name 之类的命名约定,你的列名对于显示用户来说也不会很漂亮。

使用json_encode转成json。

【讨论】:

    【解决方案3】:
    $query = "SELECT * FROM users"; 
    $result = mysqli_query($link, $query);
    $users=array();
    $response=NULL;
    if ($result = $link->query($query)) {
        while($row = $result->fetch_assoc()){
           $users['users'][]=$row;
        }
       $response=json_encode($users);
    }
    

    【讨论】:

      【解决方案4】:

      尝试如下:

      $query = "SELECT * FROM user";
      $all_users = array();
      if ($result = $link->query($query)) {
          $users = array();$i=0;
          while($row = $result->fetch_assoc()){
              $users[$i]['id'] = $row['id'];
              $users[$i]['name'] = $row['name'];
              $users[$i]['age'] = $row['age'];
              $i++;
          }
      }
      $all_users['users'] = $users;
      echo json_encode($all_users);
      

      【讨论】:

        猜你喜欢
        • 2012-05-26
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        • 1970-01-01
        • 2014-11-03
        相关资源
        最近更新 更多