Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何列出相等的数据库表数据行?_Php_Mysql - Fatal编程技术网

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