从PDO函数返回值


Returning values from a PDO function

我在包含的文件中有这个函数

function ListModules() {
try {
        global $DBH;
        $ListModules->query("SELECT * FROM modules");
        $ListModules->execute();
        return $ListModules->fetchAll();
    } catch (PDOException $e) {
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}  }

然后我试着将它们回显到像这样的下拉框中:

echo "<select name='deletelist' class='form-control'>
        <option value='0'>Choose a module to delete</option>";
        while($modulelist = ListModules()) {
            echo "<option value='".$moduelist['id']."'>".$modulelist['name']."</option>";
        }
    echo "</select>";

我做错了什么?

ListModules() return array

while($modulelist = ListModules()) 

等于

while(true)

必须循环数组,在您的情况下,最好使用foreach

$modulelist = ListModules();
echo "<select name='deletelist' class='form-control'>
    <option value='0'>Choose a module to delete</option>";
foreach( $modulelist as $module ){
     echo "<option value='".$module ['id']."'>".$module ['name']."</option>";
}
echo "</select>";

这是因为你的函数返回某种数组,所以你的循环相当于:

while ($modulelist = array(1, 2, 3)) {

这基本上意味着它总是为真。

你可能想要的是一个foreach循环