Php 从表中获取整个内容

Php 从表中获取整个内容,php,mysql,json,mysqli,Php,Mysql,Json,Mysqli,我有这样一个表结构: id,name,age,etc... 我希望获得所有条目并以表格结构显示在我的网站上,就像它们在MYSQL表格中组织一样: | id | name | age | | --- | ----- | --- | | 1 | Peter | 23 | | 2 | Susan | 34 | | 3 | Tom | 45 | 使用以下代码,我可以获得所有名称: $query = "SELECT * FROM users"; if ($result =

我有这样一个表结构:

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 />";
    }
}
但是我需要使用
$row['name']
分别指定每一列。如果有>100列,我需要指定每一列吗

有没有办法在JSON响应中从我的表中获取所有数据(包括所有列名):

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

是的,只需使用以下内容:

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

在您的while循环中。

是的,只需使用以下内容:

 foreach($row as $colName => $colValue)
在你的while循环中

可以像这样使用foreach循环

但问题是,为什么要担心表中有100列?根据规范化,一个表中不会有这么多列。但即使您有,您的列名也不会很好地显示给用户,因为列名这样的命名约定

使用json_encode转换为json

$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);
}
可以像这样使用foreach循环

但问题是,为什么要担心表中有100列?根据规范化,一个表中不会有这么多列。但即使您有,您的列名也不会很好地显示给用户,因为列名这样的命名约定

使用json_encode转换为json。

尝试以下操作:

$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);
}
$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);
请尝试以下操作:

$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\u field\u name
从数据库中获取列名。只是一个旁注,但您要执行两次查询。100列可能是一个坏表design@jeroen:谢谢,我更正了。@Dagon:我只是想指出,我有很多专栏,我正在寻找加载它们的方法,不指定每个名称。使用
mysql\u field\u name
从数据库中获取列名。只是一个旁注,但您要执行两次查询。100列可能是一个坏表design@jeroen:谢谢,我更正了。@Dagon:我只是想指出,我有很多专栏,我正在寻找加载它们的方法,没有指定每个名字。谢谢,但是你能提供一个小例子吗?当然。只要用这样的东西来扩充你的while循环:
while($row=$result->fetch_assoc()){foreach($colName=>$colValue){echo$colName.:“$colValue;}}}}
谢谢,但是你能提供一个小例子吗?当然可以。只需使用以下内容增强while循环:
while($row=$result->fetch_assoc()){foreach($colName=>$colValue){echo$colName.:“$colValue;}}}