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;}}}