【发布时间】:2012-12-22 03:55:33
【问题描述】:
我想创建一个简单的选择下拉菜单,由我的 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。
似乎已经有无数关于这个主题的主题,但据我所知,我的代码与那些已经回答的问题的正确答案相匹配。
提前致谢。
【问题讨论】:
-
你试过什么?您是否检查查询是否返回任何内容?我还建议您使用准备好的语句,因为您已经在使用 MySQLi。但是您应该在控制台、PHPMyAdmin 或任何您可以尝试的方式中尝试查询。 MySQL 可能会严重失败,但如果没有内置检查,您将永远不会在浏览器中知道它......只是没有结果。也许您可以使用
print print_r($row, true);发布$row 的内容。 -
在while循环中添加
print_r($row);,看看会返回什么 -
Swapnesh 做到了。但是,您的代码也存在“查询后忘记”的弱点。您查询,将结果存储在 $result 中,但您实际上并没有检查 $result。你应该有 if ($result) { // 现在尝试获取 } else { printf("Error: %s\n", mysqli_error($connection));当然,正如 Ian 指出的那样,查询也可以返回一个空的结果集。
-
@gview 只是使用我的调试知识,一开始我做了很多......现在帮助别人:)
-
错误的分号不是问题。这会引发 Parse 错误。我敢肯定,要么查询被炸毁(输入错误的列名等),要么没有返回任何内容。
标签: php select drop-down-menu mysqli