2016-03-01 48 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)){因爲除資源之外的所有內容都是可選的 –