Php 从PDO函数返回值
我在包含的文件中有此函数Php 从PDO函数返回值,php,pdo,Php,Pdo,我在包含的文件中有此函数 function ListModules() { try { global $DBH; $ListModules->query("SELECT * FROM modules"); $ListModules->execute(); return $ListModules->fetchAll(); } catch (PDOException $e) { file_put_con
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>";
echo”
选择要删除的模块”;
而($modulelist=ListModules()){
echo“$modulelist['name']”;
}
回声“;
我做错了什么?这是因为函数返回某种数组,所以循环等价于:
while ($modulelist = array(1, 2, 3)) {
这基本上意味着它永远是真的
您可能需要的是一个循环。ListModules()
returnarray
while($modulelist = ListModules())
等于
while(true)
必须循环数组,在您的情况下,最好使用
$modulelist=ListModules();
回声“
选择要删除的模块”;
foreach($modulelist作为$module){
回显“$module['name']”;
}
回声“;
我认为这正是我需要的,因为如果我将其放入文件本身而不使用函数,我可以使用$modulelist=$ListModules->fetch,它工作得很好。您应该理解PHP中类型之间的差异fetch
返回一行,并在PDO语句中前进内部点fetchAll
返回一个包含所有结果的数组。因此,fetch
实际上是一个接一个地执行,但是fetchAll
一次获取所有结果?完全正确。您应该阅读正在使用的函数的手册条目。我也缺少$DBH->query
。您遇到了什么问题?$moduelist['id']
缺少一个l
,这是复制/粘贴打字错误吗?
$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>";