【问题标题】:PHP mysql constructing a table properly by columnsPHP mysql按列正确构建表
【发布时间】:2018-06-05 18:41:17
【问题描述】:

我会尽力解释这一点。我有一个包含 100 个值的表,两个字段:ID 和名称。就本示例而言,ID 并不重要。

我想做的是选择所有记录并将它们显示在五列中,但我需要它们按字母顺序从上到下:

示例: 表数据有以下内容:

AAAA
AAAB
AAAC
AAAD
AAAE
AAAF

我需要显示如下数据:

AAAA     AAAD
AAAB     AAAE
AAAC     AAAF

这有意义吗?

如果这不可能,那么我会接受:AAAA AAAB AAAC AAAD AAAE 美国航空航天局

无论哪种方式,以最简单的方式为准。

好的,这是我现在遇到的错误:

[Mon Dec 02 22:55:19 2013] [error] [client xx.xx.xx.xx] PHP 警告:mysql_fetch_assoc() 期望参数 1 为 资源,在第 35 行的 /usr/home/user/www/data/test/testing.php 中给出的字符串
[Mon Dec 02 22:55:19 2013] [error] [client xx.xx.xx.xx] PHP Notice: Undefined variable: result in /usr/home/user/www/data/test/testing.php on line 42

以下是相关代码:

<?php
    $username = "user";
    $password = "password";
    $hostname = "localhost";

    //connection to the database
    $dbhandle = mysql_connect($hostname, $username, $password)
      or die("Unable to connect to MySQL");

    $selected = mysql_select_db("equine",$dbhandle)
      or die("Could not select Database");

    $query = 'select * from breeds';

    while ($row = mysql_fetch_assoc($query)) {
        $result[] = $row;
    }

    ?>
    <table><tr><td>
    <?php
    for ($i = 0; $i < count($result); $i++) {
        if ($i % (count($result) / 5) == 0) {
            echo "</td><td>";
        }
        echo "$result <br />";
    }
?>
</td></tr></table>

好的,现在是错误,我确保我直接剪切并粘贴了您的内容....

[2013 年 12 月 3 日星期二 11:43:12] [错误] [客户端 xx.xx.xx.xx] PHP 解析错误:语法错误,意外 '[',
期待 ']' 在 /usr/home/user/www/data/test/testing.php 第 45 行

好吧,我走得更远了,这是输出:

数组[名称]数组[名称]数组[名称]数组[名称]数组[名称]数组[名称]数组[名称]

好的,我知道了,我会在几分钟后发布我的代码,我需要清理一下。

好吧,我以为我已经弄清楚了。它的打印但不限于每行 5 个数据元素。

代码如下:

<?php
    $username = "username";
    $password = "password";
    $hostname = "localhost";

    //connection to the database
    $link = mysqli_connect($hostname, $username, $password,"equine")
     or die("Error " . mysqli_error($link));

    // connect to database, etc ...
    $query = "SELECT name FROM breeds" or die("Error in the consult..." . mysqli_error($link));

    $result = $link->query($query);

    while($row = mysqli_fetch_array($result)) {
             // echo $row["name"] . "<br>";
       $myResult[] = $row;
    }

    ?>
    <table border="1"><tr><td>
    <?php
    for ($i = 0; $i < count($myResult); $i++) {
       if ($i % (count($myResult) / 5) == 0) {
          echo "</td><td>";
       }
       echo $myResult[$i]['name']. "<br />";
    }
    ?>
</td></tr></table>

但是输出看起来像这样:

<table border="1"><tr><td>
</td><td>Brittinee<br /></td><td>Pit Bull<br /></td><td>Black Lab<br /></td><td>Mutt<br /></td><td>Great Dane<br /></td><td>Doberman<br /></td><td>Shepard<br /></td></tr></table>

除了数据元素应该是在一条直线上,我知道它不会在这里显示。

【问题讨论】:

标签: php mysql html-table


【解决方案1】:

您的第二个选项是最简单的。

要在此处实现您的次要选项是 SQL Fiddle,它演示了以下查询:

SELECT GROUP_CONCAT(m.Name ORDER BY m.Name SEPARATOR ' ')  AS NameConcat
FROM mytable as m

【讨论】:

    【解决方案2】:

    我不完全确定你在问什么,但是如果你从数据库中检索一个查询集,那么你可以将它们显示在像这样的列中

    <?php
    // connect to database, etc ...
    $query = mysql_query('select * from `breeds`');
    while ($row = mysql_fetch_assoc($query)) {
        $result[] = $row;
    }
    ?>
    <table><tr><td>
    <?php
    $divider = count($result) / 5;
    for ($i = 0; $i < count($result); $i++) {
        if ($i > $start) {
            echo "</td><td>";
            $divider += ceil(count($result) / 5);
        }
        echo "$result[$i]['name'] <br />";
    }
    ?>
    </td></tr></table>
    

    当你查询数据时

    select * from `table` order by `name` asc
    

    需要注意的是,mysql_query 已弃用,mysql_connect 和 mysql_select_db 也是如此。这些函数并不安全,导致SQL injection 攻击。

    【讨论】:

    • 好的,这很烦人,我无法格式化我的评论,但我基本上包括了你所拥有的但现在我收到了一个错误:[Mon Dec 02 22:01:03 2013] [error ] [客户端 xx.xx.xx.xx] PHP 解析错误:语法错误,意外的 T_ENCAPSED_AND_W HITESPACE,在第 44 行的 /usr/home/user/www/data/test/testing.php 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING跨度>
    • 这就是我的想法,但这并不能让我正确格式化代码 '?php for ($i = 0; $i "; } echo $results['name']
      "; } // 关闭连接 mysql_close($dbhandle); ?> '
    • 你错过了一个 " 但我已经更改了代码。另外,只需将有关项目的未来信息添加到问题中。
    猜你喜欢
    • 2011-11-07
    • 2011-04-23
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多