我想创建一个简单的选择下拉列表,由我的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来做这个。
在这个问题上似乎已经有无数的主题,但据我所知,我的代码与那些已回答问题的正确答案相符。
提前致谢。
答案 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;
许多人对这种做法不以为然,但它是合法的,程序员一直都在使用它。