我的课程中有这个代码:
public function get_data(){
$sql = "select id_especialidad, descripcion from especialidad";
foreach($this->dbh->query($sql) as $row)
{
$this->rows[] = $row;
}
return $this->rows;
}
现在我从HTML文件中使用它:
<select>
<?php
$datos = $db->get_data();
for($i=0;$i<sizeof($datos);$i++)
{
?>
<option value="<?php echo $datos[$i]["id_especialidad"]?>"><?php echo $datos[$i]["descripcion"]?></option>
<?php
}
?>
</select>
现在在浏览器中我看到带有行的select但在第一行中是:“注意:未定义的索引:(file_path)中的描述”
我的表格中有9行,但是当我把它设为“print sizeof($ datos)”时,它显示了11行。
发生了什么事?
有另一种显示此数据的方法吗?
谢谢!
答案 0 :(得分:0)
由于我不知道你在哪里以及如何使用或重新使用$this->rows[]
,因为你还没有发布它,我会改变你的代码:
public function get_data()
{
$sql = "SELECT id_especialidad,
descripcion
FROM especialidad";
$result = array();
foreach($this->dbh->query($sql) as $row)
{
$result = $row;
}
return $result;
}
鉴于 $this->dbh->query
是PDO query
,如果您print_r
得到get_data
的结果,它应该会给您类似的内容:< / p>
Array(
[0]=>Array([id_especialidad]=>1
[0]=>1
[descripcion]=>test
[1]=>test
)
[1]=>Array([id_especialidad]=>2
[0]=>2
[descripcion]=>test2
[1]=>test2
)
)
你可以像这样轻松阅读:
<select>
<?php
$data = $db->get_data();
foreach ($data as $item)
{
?>
<option value="<?php echo $item["id_especialidad"]; ?>"><?php echo $item["descripcion"]; ?></option>
<?php
}
?>
</select>
如果您获得的结果超过9个,那么它本应该只有9个,我只能认为$this->rows[]
在使用后或类似情况下未被清除可能会出现问题。