从表中获取全部内容

Posted

技术标签:

【中文标题】从表中获取全部内容【英文标题】: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:我只是想指出,我有很多列,我正在寻找一种方法来加载它们,而不是指定每个名称。 【参考方案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);

【讨论】:

以上是关于从表中获取全部内容的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

Mysql 从一个表中选择全部,从另一个表中选择一些使用别名

sql中的select是啥意思

在检查行是不是已存在时,选择不会从表中获取任何内容

sql:表中数据全部删除之后,重新插入时,从1开始增加

sql如何在多个表中查询一个表的全部列