【问题标题】:Dynamic drop-down list not showing strings动态下拉列表不显示字符串
【发布时间】:2016-03-01 16:01:21
【问题描述】:

我是 PHP 新手,我正在尝试从 PostgreSQL 查询中创建一个动态下拉列表。基本上,脚本会询问我的数据库存在哪些课程(学校课程),然后创建所有可用课程的下拉列表。

它连接到数据库并检索正确的值(我自己已经确认过),但是当我打开下拉列表时它们显示为空字符串。更诡异的是,如果数据库包含两个课程,下拉列表中会有两个空字段可供选择,如果是三个则列表中还有三个空字段可供选择。

这是我的代码:

<html>
<body>
The user interface for <?php echo $_POST["name"]; ?><br>

<?php
// Connecting, selecting database
$dbconn = pg_connect("host=*** dbname=*** user=*** password=***")
    or die('Could not connect: ' . pg_last_error());

// Query for Course Information (for the drop-down box)
$query = 'SELECT * FROM courseinformation';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

// Initialize the drop-down list (html-code)
echo "<p>Drop-down list:</p><br>";
echo "<select name=\"formCourse\">";
echo "    <option value=\"\">Select Course</option>";

// Create the items in the drop-down list
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
    echo "<option value=\"foo\">$line[0]</option>";
}

// End the drop-down list
echo "</select>";
echo "</p>";

// Free resultset
pg_free_result($result);

// Closing connection
pg_close($dbconn);
?>

</body>
</html>

下面是它的样子:

请求$line 而不是$line[0] 会得到以下结果:

怎么了?

【问题讨论】:

    标签: php html postgresql


    【解决方案1】:

    您通过传递 PGSQL_ASSOC 标志来获取结果。这意味着您的结果不会被数字索引,例如 $line[0] 但它们将是一个关联数组,其数组键与您的 postgres 列标题匹配。所以也许 $line['courseTitle'].

    【讨论】:

    • 谢谢,但我现在根本无法编译(网站显示空白屏幕)。我可以使用什么标志来使列被索引?编辑:没关系,找到了!它是 PGSQL_NUM,现在我可以使用索引了。谢谢!
    • 将行更改为 while ($line = pg_fetch_array($result)) { 因为除了资源之外的所有内容都是可选的
    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多