【问题标题】:Printing out each row from a MYSQL table individually in PHP在 PHP 中分别打印出 MYSQL 表中的每一行
【发布时间】:2017-04-21 16:41:24
【问题描述】:

我正在尝试在 PHP 中单独打印出我的 SQL 数据库中的每一行。我正在尝试这样做,以便检索到的每一行,它都可以像一个链接一样将用户引导到另一个页面。例如,当前的 SQL 查询将从数据库类别中输出类别名称,我希望它输出该表中的所有值,但拥有它,因此每个都有不同的重定向链接到单击的另一个页面。

$query = "SELECT CATEGORY_NAME
FROM CATEGORIES ORDER BY CATEGORY_ID ASC";      
$results = @mysqli_query ($conn, $query);
$numrows = mysqli_num_rows($results);
if ($results) {
    if ($numrows >0) {
        echo '      
<table>
        <tr>
        <td><strong>Categories</stong></td>

    </tr>';
        while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
            echo '<tr>      
            <td>' . $row['CATEGORY_NAME'] . '</td>
            </tr> 
        '; 
        }
        mysqli_free_result ($results);  

比如,

Category 
__________

PS4
XBOX 

我可以点击 PS4,它会将我带到另一个页面,我知道如何使用 href 执行此操作,然后在 sql 中打印出该行但是,我不确定如何在不打印的情况下单独打印出每一行使用 $row['CATEGORY_NAME'] 将它们删除。

感谢您的帮助

【问题讨论】:

  • 警告:在使用 @ 运算符调用方法时不要抑制错误。如果出现问题,您想了解它并需要采取纠正措施,为用户显示有用的消息,记录问题,等等。如果您忽略试图指出严重问题的错误,也会使此类调试问题变得更加复杂。
  • 解释......因为你所做的正是你如何单独打印每个......
  • 这不是直接得到答案,但我强烈建议阅读cross-site scripting。像上面这样的代码很容易受到攻击。例如。当有人将CATEGORY_NAME 放入名为&lt;script src="myhackingwebsite.com/malicious_script.js"&gt;&lt;/script&gt;PS3 的数据库中时会发生什么?

标签: php mysql database


【解决方案1】:

您可以将需要重定向到的链接与CATEGORY_NAME 一起存储在新列CATEGORY_URL 中,然后像这样打印出来:

$query = "SELECT CATEGORY_NAME, CATEGORY_URL FROM CATEGORIES ORDER BY CATEGORY_ID ASC";      
$results = mysqli_query($conn, $query);
$numrows = mysqli_num_rows($results);
if ($numrows > 0) {
        echo '      
        <table>
        <tr>
          <td><strong>Categories</stong></td>
        </tr>';
        while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
            echo '
            <tr>      
              <td>
                <a href="'.$row['CATEGORY_URL'].'">'.$row['CATEGORY_NAME'].'</a>
              </td>
            </tr>'; 
        }
        mysqli_free_result ($results); 
} else {

// no results found 

}

或者如果你只是想把它作为一个url参数传递,你只需要像这样修改:

<a href="https://www.google.com/#q='.$row['CATEGORY_NAME'].'">'.$row['CATEGORY_NAME'].'</a>

<a href="https://www.yoursite.com/'.$row['CATEGORY_NAME'].'.php">'.$row['CATEGORY_NAME'].'</a>

【讨论】:

    【解决方案2】:

    类似的东西? (我不确定我是否理解您的问题)

    while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
        echo '<tr>      
        <td><a href="somelink.php?cat=' . $row['CATEGORY_NAME'] . '">'  . 
        $row['CATEGORY_NAME'] . '</a></td>
        </tr> '; 
    }
    

    更新 如果一个类别被命名为 playstation,playstation.php 将被链接到...

    while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
        echo '<tr>      
        <td><a href="' . $row['CATEGORY_NAME'] . '.php">'  . 
        $row['CATEGORY_NAME'] . '</a></td>
        </tr> '; 
    }
    

    虽然上面会产生一个疯狂的猜测,但您正在寻找完全不同的东西。您正在寻找的东西本质上是一种显示游戏机信息的方法,一种显示有关 PS4 等信息的方法,具体取决于用户点击的内容!?在这种情况下,您应该这样做:

    //Include ID of category in your sql-statement
    $query = "SELECT ID, CATEGORY_NAME
    FROM CATEGORIES ORDER BY CATEGORY_ID ASC"; 
    ....
    ....
    while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
        echo '<tr>      
        <td><a href="presentinfo.php?id=' . $row['ID'] . '">'  .  
        $row['CATEGORY_NAME'] . '</a></td>
        </tr> '; 
    }
    

    并创建presentinfo.php 文件,您可以在其中根据 url 中给出的 id 获取有关类别的信息。 (例如select from categories id={id given in url}

    【讨论】:

    • 我在 SQL 表中有 4 个类别,我试图拥有它,因此每个条目都有一个不同的 url,当点击时,将用户重定向到。例如,他们点击 playstation,用户被重定向到 playstation.php。如果他们单击 xbox,他们将被重定向到 xbox.php。我不确定如何分别从数据库中检索数据,以便为每个数据分配重定向。
    猜你喜欢
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2015-12-21
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    相关资源
    最近更新 更多