2011-03-26 51 views
0

這是我第一次嘗試使用PHP與數據庫(MySQLi)。我終於得到了數據庫連接(至少,我沒有得到任何錯誤)。無法顯示MySQLi SELECT查詢的結果

現在我試圖獲得選擇查詢的結果並將其顯示在我的表單中,但我無法獲取任何要顯示的內容。

我哪裏錯了?

這是爲了從數據庫中檢索查詢結果的代碼:

/*Connect To DB*/ 
$conn = mysqli_connect($host, $user, $pwd) 
     or die("Could not connect: " . mysql_error()); //connect to server 
    mysqli_select_db($conn, $database) 
     or die("Error: Could not connect to the database: " . mysql_error()); 

    /*Check for Connection*/ 
    if(mysqli_connect_errno()){ 
     /*Display Error message if fails*/ 
     echo 'Error, could not connect to the database please try again later.'; 
    exit(); 
    } 
/*Query for states*/ 
$query = "SELECT StateAbbreviation, StateName FROM USState ORDER BY StateName"; 
$result = mysqli_query($conn, $query); 
$num_results = mysqli_num_rows($result); 
?> 

這是結果應顯示的形式:

<form id="StateSelector" action="" method="post"> 
<select size="1" name="states" id="states"> 
<option value "">--Select State--</option> 

<!--Loops through the states--> 


<? 
    /*Loop through through each stat and display as an option as a drop-down field */ 


    for($i=0; $i<$num_results; $i++) { 
     $row = mysqli_fetch_assoc($result); 
     echo 'option value="' .$row['StateAbbreviation'] . '">' . $row['StateName'] . '</option>' . "\n"; 
    } 
?> 
    </select> 

&nbsp; Zip: 
<input type="text" name="zip" size="5" /></p> 
</form> 

<p>Your email address:<br/> 
<input type="text" name="email" size="20" /></p> 

<p>Please let us know what you think:<br/> 
<textarea name="feedback" rows="12" cols="40" wrap="virtual" /></textarea></p> 

<p><input type="submit" value="Send feedback" /></p> 

</form> 

回答

0

在下面的行:

echo 'option value="' .$row['StateAbbreviation'] . '">' . $row['StateName'] . '</option>' . "\n"; 

您在的開頭缺少< 210標籤。

該行應該被校正到這樣一個:

echo '<option value="' .$row['StateAbbreviation'] . '">' . $row['StateName'] . '</option>' . "\n"; 



作爲快速測試用例重現該問題,下面的代碼部分:

<select> 
<?php 
    for ($i=0 ; $i<10 ; $i++) { 
     // Note the missing < before "option" 
     echo 'option value="' . $id . '">' . $i . '</option>'; 
    } 
?> 
</select> 

會在Firefox中給你一個空的列表,而下面這個:

<select> 
<?php 
    for ($i=0 ; $i<10 ; $i++) { 
     // The < before "option" has been added 
     echo '<option value="' . $id . '">' . $i . '</option>'; 
    } 
?> 
</select> 

會給你預期的清單 - 有十個選項。