2016-03-01 47 views
0

我是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> 

下面是什么它看起来像一个画面: What it looks like

问计$line,而不是$line[0]给出了这样的结果: enter image description here

这是怎么回事错误?

回答

1

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

+0

谢谢,但我现在根本无法编译它(网站显示一个空白屏幕)。我可以使用哪种标记来创建索引列? 编辑:没关系,找到它!这是PGSQL_NUM,现在我可以使用这些索引。谢谢! – Mossmyr

+1

将行更改为while($ line = pg_fetch_array($ result)){因为除资源之外的所有内容都是可选的 –