【问题标题】:Why isn't my MySQL data being displayed in my table?为什么我的 MySQL 数据没有显示在我的表中?
【发布时间】:2018-06-16 16:34:55
【问题描述】:

为什么我的 MySQL 数据没有显示在我的表中?一切似乎都很好,只是我的数据(这是鸟类名称列表等)没有显示出来。我需要一些新鲜的眼光,才能看到我的错误在哪里,是的,我知道可能有更简单的方法可以做到这一点,但这是我的任务所需要的,所以请不要提供其他方法来做到这一点。我需要的只是帮助让我的数据填充到 HTML 表中。我的 PHP 代码如下:

PHP 代码

<?php
    $pageTitle = 'Mod06 Pagination| Jason McCoy ';
    include('includes/header.inc.php');
    include ('includes/db_connect.inc.php');

    $display = 8;

    // Determine how many pages there are...

    if (isset($_GET['p']) && is_numeric($_GET['p'])) { // Already been determined.
        $pages = $_GET['pages'];
    } else { 
        $query = "SELECT COUNT(birdID) FROM birds";
        $result = @mysqli_query($dbc, $query);
        $row = @mysqli_fetch_array($result, MYSQLI_NUM);
        $records = $row[0];
    }

    // Calculate the number of pages...

    if ($records > $display) { 
        $pages = ceil($records/$display);
    } else {
        $pages = 1;
    }

    // Determine where in the database to start returning results...

    if (isset($_GET['s']) && is_numeric($_GET['s'])) {
        $start = $_GET['s'];
    } else {
        $start = 0;
    }

    // Sort the columns 
    // Default is birdID

        $sortDefault = 'birdID';

        // Create an array for the columns

        $sortColumns = array('birdID', 'nameGeneral', 'nameSpecific', 'populationTrend');

        // Define sortable query ASC DESC

        $sort =  (isset($_GET['sort'])) && in_array($_GET['sort'], $sortColumns) ? $_GET['sort']: $sortDefault;
        $order = (isset($_GET['order']) && strcasecmp($_GET['order'], 'DESC') == 0) ? 'DESC' : 'ASC';

        // Run the query 

    $query = "SELECT birdID, nameGeneral, nameSpecific, populationTrend FROM birds ORDER BY $order LIMIT $start, $display";
    $result = @mysqli_query($dbc, $query);       
?>

    <!-- Table header: -->
    <table align="center" cellspacing="0" cellpadding="5" width="80%">
        <tr>
            <th><a href='index.php?sort=birdID&order=<?php echo $order == 'DESC' ? 'ASC' : 'DESC' ?>'>Bird<?
                            if($_GET["order"]=="ASC" && $_GET["sort"]=="birdID"){
                                echo '<img src="images/downArrow.jpg" id="birdASC" name="birdASC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                            } else {
                    echo '<img src="images/upArrow.jpg" id="birdDESC" name="birdDESC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                }?></a></th>
            <th><a href='index.php?sort=nameGeneral&order=<?php echo $order == 'DESC' ? 'ASC' : 'DESC' ?>'>General Name<?
                            if($_GET["order"]=="ASC" && $_GET["sort"]=="nameGeneral"){
                                echo '<img src="images/downArrow.jpg" id="nameGeneralASC" name="nameGeneralASC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                            } else {
                    echo '<img src="images/upArrow.jpg" id="nameGeneralDESC" name="birdDESC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                }?></a></th>
            <th><a href='index.php?sort=nameSpecific&order=<?php echo $order == 'DESC' ? 'ASC' : 'DESC' ?>'>Name Specific<?
                            if($_GET["order"]=="ASC" && $_GET["sort"]=="nameSpecific"){
                                echo '<img src="images/downArrow.jpg" id="nameSpecificASC" name="nameSpecificASC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                            } else {
                    echo '<img src="images/upArrow.jpg" id="nameSpecificDESC" name="birdDESC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                }?></a></th>
            <th><a href='index.php?sort=populationTrend&order=<?php echo $order == 'DESC' ? 'ASC' : 'DESC' ?>'>Population Trend<?
                            if($_GET["order"]=="ASC" && $_GET["sort"]=="populationTrend"){
                                echo '<img src="images/downArrow.jpg" id="populationTrendASC" name="populationTrendASC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                            } else {
                    echo '<img src="images/upArrow.jpg" id="populationTrendDESC" name="birdDESC" style="margin:-15px 0 0 13px;" width="18px" height="18px">';
                }?></a></th>
        </tr>
<?php

    // Display the database results in the table...

    while ($row = @mysqli_fetch_array($result, MYSQL_ASSOC)) {
        echo '<tr>
            <td align="left">$row[birdID]</td>
            <td align="left">$row[nameGeneral]</td>
            <td align="left">$row[nameSpecific]</td>
            <td align="left">$row[populationTrend]</td>
         <tr>';
    } 

    echo '</table>';    
    mysqli_close($dbc);

    // Make the links to other pages, if necessary.
    if ($pages > 1) {
        echo '<br /><p>';
        $currentPage = ($start/$display) + 1;
    // If it's not the first page, make a Previous button:
    if ($currentPage != 1) {
        echo '<a href="index.php?s=' . ($start - $display) . '&pages=' . $pages . '&sort=' . $sort . '">Previous</a> ';
    }
    // Make all the numbered pages:
    for ($i = 1; $i <= $pages; $i++) {
        if ($i != $currentPage) {
            echo '<a href="index.php?s=' . (($display * ($i - 1))) . '&pages=' . $pages . '&sort=' . $sort . '">' . $i . '</a> ';
        } else {
            echo $i . ' ';
        }
    } // End of FOR loop.

    // If it's not the last page, make a Next button:
    if ($currentPage != $pages) {
        echo '<a href="index.php?s=' . ($start + $display) . '&pages=' . $pages . '&sort=' . $sort . '">Next</a>';
    }

    echo '</p>'; 

} 

    include('includes/footer.inc.php');
?>


</div>
</body>
</html>

【问题讨论】:

    标签: php mysql html-table


    【解决方案1】:

    把这个$row[birdID]改成$row['birdID'],你错过了''

    【讨论】:

    • 感谢您的帮助,但这不起作用,它返回错误
    • 如果您想查看当前显示的内容,这里是该页面的链接:jasonkmccoy.com/AB-Tech/web250/Mod06/McCoy_mod06/… 我收到此错误解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,在 /home 中需要 T_STRING 或 T_VARIABLE 或 T_NUM_STRING /jkm1972/public_html/AB-Tech/web250/Mod06/McCoy_mod06/index.php 在第 92 行
    【解决方案2】:

    像这样在echo中使用",你使用了',因为数据库中的值没有显示出来。

    while ($row = @mysqli_fetch_array($result, MYSQL_ASSOC)) {
        echo "<tr>
            <td align=\"left\">$row[birdID]</td>
            <td align=\"left\">$row[nameGeneral]</td>
            <td align=\"left\">$row[nameSpecific]</td>
            <td align=\"left\">$row[populationTrend]</td>
         <tr>";
    } 
    

    【讨论】:

      【解决方案3】:

      抱歉,如果有点简洁,请通过手机输入...

      '$row[birdID]'

      其他部分应正确改写为:

      '$row['birdID']'

      因为birdID 是一个字符串,而不是变量名。

      虽然 PHP 使用 this 作为字符串,但如果当前范围内没有具有该名称的变量。

      始终在字符串文字数组索引周围使用引号。例如,$foo['bar'] 是 正确,而 $foo[bar] 不是。但为什么?遇到这种情况很常见 旧脚本中的语法

      来自 PHP 文档:http://php.net/manual/en/language.types.array.php

      EDIT 也有人指出了 echo 中使用的单引号,这也是一个问题。使用单引号,PHP 不会解释字符串的内容,而使用双引号,PHP 会解析它,并正确使用值。

      【讨论】:

      • 我明白你在说什么,但你的建议没有用。
      • 我只是在想 - MySQL 不是 only 使用小写的表名和列名吗?尝试使用“birdid”而不是“birdID”,等等。可悲的是,我现在没有 MySQL 来测试这个。另外,尝试在 MySQL 工作台或 PHPMyAdmin 中运行查询本身 - 无论你有什么......
      • 我现在可以正常显示数据,但排序不工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多