php - 结果从数据库中可用的确切行返回减去 1(负 1)的值

标签 php mysql database

<?php

include 'db.php';

$subassetcategory = $_GET["subassetcategory"];

if ($subassetcategory == "all") {
    $sql = "SELECT * FROM asset_subasset";
}
else {
    $sql = "SELECT * FROM asset_subasset WHERE subassetcategory = '" . $subassetcategory . "'";
}

$result = mysql_query($sql) or die(mysql_error());

if ($row = mysql_fetch_array($result)) {

    echo "<table border='1'>
            <tr>
            <th>Asset ID</th>
            <th>Subasset Category</th>
            <th>Subasset Name</th>
            </tr>";

    while ($row = mysql_fetch_array($result)) {
        $subassetid = $row['subassetid'];
        $assetid = $row['assetid'];
        $subassetname = $row['subassetname'];
        $subassetcategory = $row['subassetcategory'];

        echo "<tr>";
        echo "<td>" . $assetid . "</td>";
        echo "<td>" . $subassetcategory . "</td>";
        echo "<td>" . $subassetname . "</td>";
        echo "<td>" . "<a href='viewassetdetail.php?subassetid=$subassetid&assetid=$assetid'>View<a/>" . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else {
    echo "<br> No data found </br>";
}

mysql_close($connect);

?>

请帮助我,我无法弄清楚为什么此代码无法正确返回结果。它从数据库中可用的确切行中返回了少 1 行(如果结果假设有 2 行,它将只返回 1 行)。

if ($row = mysql_fetch_array($result)) {

    echo "<table border='1'>
            <tr>
            <th>Asset ID</th>
            <th>Subasset Category</th>
            <th>Subasset Name</th>
            </tr>";

    while ($row = mysql_fetch_array($result)) {
        $subassetid = $row['subassetid'];
        $assetid = $row['assetid'];
        $subassetname = $row['subassetname'];
        $subassetcategory = $row['subassetcategory'];

        echo "<tr>";
        echo "<td>" . $assetid . "</td>";
        echo "<td>" . $subassetcategory . "</td>";
        echo "<td>" . $subassetname . "</td>";
        echo "<td>" . "<a href='viewassetdetail.php?subassetid=$subassetid&assetid=$assetid'>View<a/>" . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else {
    echo "<br> No data found </br>";
}

mysql_close($connect);

?>

如果我刚刚编写了这段代码,它就可以完美运行。

$result = mysql_query($sql) or die(mysql_error());

echo "<table border='1'>
    <tr>
    <th>Asset ID</th>
    <th>Subasset Category</th>
    <th>Subasset Name</th>
    </tr>";

while ($row = mysql_fetch_array($result)) {
    $subassetid = $row['subassetid'];
    $assetid = $row['assetid'];
    $subassetname = $row['subassetname'];
    $subassetcategory = $row['subassetcategory'];

    echo "<tr>";
    echo "<td>" . $assetid . "</td>";
    echo "<td>" . $subassetcategory . "</td>";
    echo "<td>" . $subassetname . "</td>";
    echo "<td>" . "<a href='viewassetdetail.php?subassetid=$subassetid&assetid=$assetid'>View<a/>" . "</td>";
    echo "</tr>";
}
echo "</table>";

mysql_close($connect);

?>

但如果结果为空,我希望它显示“未找到数据”。那么,有什么帮助吗?我知道这很简单,但我已经好几天找不到答案了。预先感谢您!

最佳答案

您基本上是在 if 语句中切掉第一个结果:

if ($row = mysql_fetch_array($result))

只需检查返回的行数即可保持结果集完整:

if(mysql_num_rows($result) > 0)

关于php - 结果从数据库中可用的确切行返回减去 1(负 1)的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6435198/

相关文章:

php - 优化使用 IN 和 MAX(date) 的 MySQL 查询

database - Laravel 迁移命令

database - Docker Swarm 如何处理数据库(PostgreSQL)复制?

php - 使用 Sphinx 时从 MySQL 获取完整行数据的最有效方法是什么?

PHP MySQL 查询将动态字段值与其他字段动态匹配值条件相匹配

php检查URL中是否有变量

mysql - 如何在 where 子句中使用临时列

php - Laravel belongsToMany 与 OR 条件

mysql - 帮助计数();

PHP move_uploaded_file() 错误?