php - 这段代码不起作用的任何特殊原因?我似乎无法弄清楚这个问题

标签 php html mysql

此页面的目标是检查我的数据库中的标签表,并生成包含每行标签名称和标签图像的无序列表。下面的代码可以让我完美地做到这一点:

<?php
                $sql = "SELECT * FROM tags";

                echo "<ul id='ulTags'>";
                $result = mysqli_query($conn, $sql);

                    while ($row = $result->fetch_assoc()){
                        echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row['tag'].'"><li class="listTags"><h1>'.$row['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row['path'] .'" alt="Random image" /></a></div>';
                    }
                echo "</ul>";
        ?>

但是,如果您有权限,我决定实现从数据库中删除标签的可能性。每个用户都有一个权限,如果您的权限为 1,您应该在每个图像下看到一个删除按钮。这是具有该功能的更新代码:

<?php
                $userId = $_SESSION['id'];

                $sql = "SELECT * FROM tags";
                $result = mysqli_query($conn, $sql);

                $sql2 = "SELECT * FROM user where id='$userId'";
                $result2 = mysqli_query($conn, $sql2);
                $getResult2 = mysqli_fetch_assoc($result2);

                $userP = $getResult2['permission'];

                echo "<ul id='ulTags'>";
                if (isset($_SESSION['id']) && $userP == 1) {
                    while ($row = $result->fetch_assoc()){
                        echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row['tag'].'"><li class="listTags"><h1>'.$row['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row['path'] .'" alt="Random image" /></a></div>';
                        echo "<form method='POST' action='".deleteTag($conn)."'>
                                            <input type='hidden' name='id' value='".$row['id']."'>
                                            <input type='hidden' name='tag' value='".$row['tag']."'>
                                            <input type='hidden' name='path' value='".$row['path']."'>
                                            <button id='delTag' type='submit' name='tagDelete'>Delete Tag</button>
                            </form>";
                    }
                } else {
                    while ($row = $result->fetch_assoc()){
                        echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row['tag'].'"><li class="listTags"><h1>'.$row['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row['path'] .'" alt="Random image" /></a></div>';
                    }
                };
                echo "</ul>";
        ?>

不幸的是,代码似乎存在问题,它仅回显一个标签,而不是应有的所有标签。第一段代码呼应了所有标签,但那是在我尝试添加删除按钮之前。任何线索将不胜感激。

最佳答案

调试的最佳方法是在代码的每个部分插入回显,以查看其出轨的位置。

首先检查输出的 html 页面源以查看标签是否正确回显(没有 html 错误)。

我会将 echo $result->num_rows 放置在 if else 子句之前,以查看返回的总标签数。

如果结果中有多个标签,但只显示一个标签,那么我将查看该标签是返回结果中的最后一个标签还是第一个标签。

检查这些以开始......

注意:为什么不使用一致的编码风格?

    //One place you use

    $getResult2 = mysqli_fetch_assoc($result2); // functional programming

    // another place you use 

    $row = $result->fetch_assoc(); // OOP programming

    // Stick to one style, preferably OOP

关于php - 这段代码不起作用的任何特殊原因?我似乎无法弄清楚这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45023608/

相关文章:

php - 一个 PHP 脚本带有两个 PDO 查询?

html - 基于屏幕尺寸的多个动态背景图片 url

mysql - 更新对象时重复键输入

mysql - 从 PostgreSQL 翻译到 MariaDB 的这个查询有什么问题?

php - 关于如何在 Laravel 5.5 中从 3 个不同的 SQL 表填充 View 中的 HTML 表的建议?

PHP mail() 函数不发送邮件

javascript - 从 html 下拉菜单中选择后,重定向页面并通过 url 传递选择值?

PhpExcel - 如何在第 N 行之后插入同一行?

javascript - 如何删除输入字段的边框底部?

iphone - iOS - 将我的日期变成超链接