无法从MySQL数据库中获取下拉列表

时间:2012-12-22 03:55:33

标签: php select drop-down-menu mysqli

我想创建一个简单的选择下拉列表,由我的MYSQL数据库中的表填充。 这是我的代码:

$q = 'SELECT * FROM Shipmethods';
$result = mysqli_query($connection, $q);

echo '<select name="shipmethod">';

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)); 
{   
    echo '<option value="' . $row['shipmethodid'] . '">' . $row['shipmethoddesc'] . '</option>';
}

echo '</select>';

mysqli_free_result($result); // free up the results

}

没有连接错误,表名或列名中没有拼写错误。 HTML输出显示存在选择选项,但它是空的。我想用mysqli来做这个。

在这个问题上似乎已经有无数的主题,但据我所知,我的代码与那些已回答问题的正确答案相符。

提前致谢。

2 个答案:

答案 0 :(得分:5)

从此行中删除;,其余代码对我来说似乎不错,让我知道它是否有效 -

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)); 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))

答案 1 :(得分:0)

首先,基于我们的证据,除了空结果集之外,最可能的问题是swapnesh识别的问题,这显然是一个逻辑错误。我提供了这个插图,它模拟了问题,以明确表示在这里意外完成的操作不是语法错误。错误的分号本质上导致只有在while循环耗尽后才能输入以下块。

考虑这个例子:

<?php

$r = array(1,2,3,4);

function fetchit(&$r) {
    return array_pop($r);
}


while ($val = fetchit($r))
{
    echo $val;
} 

这将是预期用途。现在如果脚本有这个代码会发生什么?

<?php

$r = array(1,2,3,4);

function fetchit(&$r) {
    return array_pop($r);
}


while ($val = fetchit($r));
{
    echo $val;
}

尝试这些,您将看到两个脚本都运行没有错误。尽管不必要,但php并不关心你是否在脚本{}中的某个位置随机包含一个未被阻塞的块,并且它也不关心if,while等是否跟随一个块。实际上,人们通过以下方式缩短代码是常见的做法:

if (//somecondition)
    statement;

许多人对这种做法不以为然,但它是合法的,程序员一直都在使用它。