Php 如何列出相等的数据库表数据行?
如何列出数据库表数据的行 我的数据库数据如下所示:Php 如何列出相等的数据库表数据行?,php,mysql,Php,Mysql,如何列出数据库表数据的行 我的数据库数据如下所示: id user_id name value 1 1 first first name1 2 1 last last name1 3 1 phone 123 4 2 first first name2 5
id user_id name value
1 1 first first name1
2 1 last last name1
3 1 phone 123
4 2 first first name2
5 2 last last name2
6 2 phone 456
用户标识号用于分隔用户
我希望每个echo用户信息都像下面的html代码一样
<div class="user_1">
<span>User first name: <b>first name1</b></span>
<span>User last name: <b>last name1</b></span>
<span>User phone number: <b>123</b></span>
</div>
<div class="user_2">
<span>User first name: <b>first name2</b></span>
<span>User last name: <b>last name2</b></span>
<span>User phone number: <b>456</b></span>
</div>
用户名:first name 1
用户姓氏:姓氏1
用户电话:123
用户名:firstname2
用户姓氏:姓氏2
用户电话号码:456
我的php代码是:
<?php
$con=mysql_connect("localhost","root","1234");
mysql_select_db("database_name");
mysql_set_charset('utf8',$con);
$result = mysql_query("SELECT * FROM table",$con);
while($row = mysql_fetch_array($result)){
echo "<div class='user_" . $row['id_user'] . "'>";
echo "<span>" . $row['name'] . ": <b>" . $row['value'] ."</b></span>";
echo "</div>";
echo "<br>";
}
mysql_close($con);
?>
但是输出如下:
<div class="user_1">
<span>first: <b>first name1</b>
</div>
<div class="user_1">
<span>last: <b>last name1</b>
</div>
<div class="user_1">
<span>phone: <b>123</b>
</div>
<div class="user_2">
<span>first: <b>first name2</b>
</div>
<div class="user_2">
<span>last: <b>last name2</b>
</div>
<div class="user_2">
<span>phone: <b>456</b>
</div>
第一:名字1
姓氏
电话:123
第一:名字2
姓氏2
电话:456
请检查我的php代码您的SQL查询很好,但是您应该首先按用户id将结果分组,如下所示
$grouped = array();
while ($row = mysql_fetch_array($result)) {
if (empty($grouped[$row['id_user']])) {
$grouped[$row['id_user']] = array();
}
$grouped[$row['id_user']][$row['name']] = $row['value'];
}
然后您可以用两个foreach循环输出它
foreach ($grouped as $id => $user) {
echo "<div class='user_$id'>\n";
foreach ($user as $name => $value) {
echo "<span>$name: <b>$value</b></span>\n";
}
echo "</div>\n";
echo "<br>\n";
}
foreach($分组为$id=>$user){
回音“\n”;
foreach($user as$name=>$value){
回显“$name:$value\n”;
}
回音“\n”;
回声“
\n”;
}
Site错误:Site.com当前无法处理此请求。我已编辑了代码的第一部分,以修复缺少的分号。是否可以编写自定义文本而不是$name:
?自定义文本而不是$name是什么意思?您可以创建一些转换数组,将name
列中的值映射到一些自定义标签,而不是使用$translationaray[$name]
而不是$name。例如:foreach($id=>$user){echo“\n;foreach($user as$name=>$value){echo”First name:$value\n;echo姓氏:$value\n“echo”电话号码:$value\n“}echo”\n“echo”
\n”}