PHP下拉列表包含数据库中的项目

时间:2010-12-01 18:53:20

标签: php

我似乎无法在下拉列表中获取表格的值。 我没有错误,只有一个空的下拉列表。 这是我的代码:

<?php               
include_once ("classes/Keten.class.php");
$keten = new Keten();
$allKet = $keten->getAllKetens();

echo '<select name="fk_keten_id">';             
while($row = mysql_fetch_array($allKet))
{
  echo '<option value="' . 
       $row['pk_keten_id'] . '">' . $row['keten_naam'] . '</option>';
}
echo '</select>'; 
?>

函数getAllKetens有效,因为我在其他页面中使用它。

提前致谢:)

请求,类/ Keten.class.php中的getAllKet()函数

public function getAllKetens()
    {
        include ("connection.php");
        $sSql = "SELECT * FROM tblKetens;";
        $vResult = mysqli_query($link, $sSql);
        mysqli_close($link);
        return($vResult);
    }

6 个答案:

答案 0 :(得分:2)

我不确定可以在你的fetch_array中使用mysql_fetch_array而不是mysqli_fetch_array来混合mysqli和mysql命令。

答案 1 :(得分:1)

您的函数getAllKetens()正在关闭数据库。在关闭与数据库的连接后,您不应该尝试获取行。

除了肥皂盒:在那里进行一些更标准的命名约定可能会更好。如果你正在返回一个mysql查询对象的句柄,那么考虑$ query或$ hQuery而不是(对我来说)更加神秘的$ allKet。 IMO,如果一个函数被称为“getAllKetens()”,它应该返回一个数据数组,而不是一个查询句柄。

答案 2 :(得分:0)

  • 确保错误已开启
  • 查看来源,如果有任何错误,它们将被select标记隐藏
  • 执行print_r($allket);以查看getAllKeten()是否实际返回了任何内容。

答案 3 :(得分:0)

这部分代码看起来很好:

echo '<select name="fk_keten_id">';             
while($row = mysql_fetch_array($allKet))
{
  echo '<option value="' . 
       $row['pk_keten_id'] . '">' . $row['keten_naam'] . '</option>';
}
echo '</select>';

你的问题应该在$ allKet。

你需要给Keten()任何参数来初始化任何东西吗?

答案 4 :(得分:0)

我怀疑$ allKet不是你想象的那样。

首先,检查HTML。如果你得到&lt; select name =“???”&gt;&lt; / select&gt;那么

a)检查$ allKet是一个资源(我认为print_r会告诉你)。 b)检查SQL是否正在选择行。 (在phpmyadmin中尝试) c)检查字段名称的拼写是否正确。

如果您看到&lt; option value =“??”&gt;&lt; / option&gt;条目,然后

a)检查您正在打印的字段名称是否正确 b)检查您是否没有使用别名隐藏它们(打印将显示最后一个字段)。

启动错误报告(在php.inf中)并删除报告的任何错误。

答案 5 :(得分:0)

好的,我明白了

使用:while($ row = mysqli_fetch_assoc($ allKet))

而不是:while($ row = mysql_fetch_array($ allKet))

谢谢大家的快速回复!