为什么不是';t我的选择框生成器显示表中的所有选项


Why isn't my select box generator displaying all options in the table?

我正在制作一个选择框生成器(名为ListGenerator),它需要从名为categories的表中获取选项名称,并将它们添加到选择框中。数据库也从允许用户输入要添加到选择框中的新选项的表单中更新。

当前生成器仅采用最后输入的名称,并将其显示在选择框中。我相信生成器直接从表单而不是查询中获得结果?下面是将数据从表单插入到表的代码,以及应该从表中选择所有内容并将其放入选择框中的查询。

if(isset($_POST['name'])) {
    $result= $pdo->prepare('INSERT INTO categories (name) VALUES(:name)');
    unset($_POST['submit']);
    $result->execute($_POST);
}
$ListGenerator =new ListGenerator();
$categoryresults = $pdo->query('SELECT * FROM categories'); 
foreach ($categoryresults as $row) {
    $ListGenerator->setList([$row['name']]);
} 
echo $ListGenerator->getHTML()

ListGenerator的代码如下,当将固定字符串输入到上面代码中的->setList函数时,它可以很好地工作:

<?php   
        class makelist{
        public $list;
        }


        class ListGenerator {
        public $makelist = [];
            public function setlist($list){
                $this->makelist = $list;
            }
            public function getHTML(){
                $result = '<select name="category">';

                foreach ($this->makelist as $list) {
                $result = $result . '<option>' . $list . '</option>';
                }


                $result =$result . '</select>';
                return $result;
            }
        }
            ?>

没有测试,但我认为它应该获取这样的结果?

$categoryresults = $pdo->query('SELECT * FROM categories');
$listitems=array();
while( $rs=$categoryresults->fetch( PDO::FETCH_OBJ ) ){
    $listitems[]=$rs->name
}
$ListGenerator->setList( $listitems );