0

我只能回显第一个选择框,但不能回显子类别。我检查了代码中的语法错误,但没有找到。我猜逻辑是不正确的。谁能告诉我为什么不显示子类别选择框?

   <?php 

    $dbh = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);

    if(isset($_GET["category"]) && is_numeric($_GET["category"]))
    {
        $category = $_GET["category"];
    }


    ?>


    <form name="theForm" method="get">

        <!-- Category SELECTION -->

   <select name="category" size="6" onChange="autoSubmit();">
                <?php
        $categories = $dbh->query('SELECT * FROM category ORDER BY c_id');

        while ($row = $categories->fetch()) {
        echo '<option value="' . $row['c_id'] . '"';
        if ($row['c_id'] == $category) echo ' selected';
        echo '>' . htmlentities($row['category']);
      }
                ?>
   </select>

        <br><br>



    </form>
4

2 回答 2

1

由于您使用单引号在字符串中使用了变量,因此您的查询很可能返回 0 结果。

$subcategories = $dbh->query('SELECT s_id, subcategory FROM subcategory Where c_id = $category');

在查询周围使用双引号,或将值连接起来'... c_id = ' . $category

但更好的是,学习如何使用参数化查询并绑定值。

于 2012-05-26T23:51:44.967 回答
1

首先,为什么你有两个数据库表?一个用于类别,一个用于子类别?当一个子类别有另一个子类别时怎么办?然后你会创建另一个表吗subsubcategory???

更好的方法是只有一个categories包含列idparenttitle等的表,其中如果parent列包含主类别0,则当子类别时,parent列包含父类别的 ID。在实现遍历树或类似方法时会更好。

我在您的代码中没有看到错误,但可能$_GET["subcategory"]不包含任何值或没有数值,因此$subcategory未设置...

你试过调试吗?

于 2012-05-26T23:55:36.613 回答