2011-10-17 53 views
0

我的下拉列表顯示爲空。我不確定我的查詢是否返回任何記錄。如何查看我的查詢是否返回任何結果?這是我的代碼。請告訴我。我被這個問題困住了。下拉列表爲空

<?php $link = mysql_connect("localhost", "root", "root"); 
      if (!$link) {  die('Could not connect: ' . mysql_error()); } 
      echo 'Connected successfully'; 

       mysql_select_db("mydb"); 
       $sql = "SELECT state_id, state_code FROM states"; 
       $result = mysql_query($sql) or die(mysql_error()); 
       ?> 

<p> 
<select name="vers"> 
<? 

while($row = mysql_fetch_array($result)){ 
    echo "<option value=\"".$row['state_id']."\">".$row["state_code"]."</option>"; 
} 
?> 
</select> 

<? 
      mysql_close($link); 
      ?> 
+4

*請*不要在生產環境中使用'root'用戶... – DaveRandom

+0

感謝您的提示。我將在生產中使用「根」。這只是開發機器。 – nav100

+0

並且_please_轉義您的輸出! – knittl

回答

5

if (!$result)測試查詢的成功或失敗並使用mysql_num_rows()驗證返回的行數。而不是die(),您可以向用戶顯示更好的錯誤,並可能呈現不同的HTML,而不是突然退出腳本。

mysql_select_db("mydb"); 
    $sql = "SELECT state_id, state_code FROM states"; 
    $result = mysql_query($sql); 

    // Instead of die(), use a construct like this for better error handling on your page 
    if (!$result) { 
    // query error 
    }  

    if (mysql_num_rows($result) === 0) { 
    // No rows returned 
    } 
    else { 
    // Success! Populate your <select> with <option>s 
    while($row = mysql_fetch_array($result)){ 
    echo "<option value=\"".$row['state_id']."\">".$row["state_code"]."</option>"; 
    } 
    } 

UPDATE

添加一個空的默認選項。確保它的value屬性不是從數據庫中檢索的東西。

<select name="vers"> 
    <option value='-1'>Choose an option...</option> 
+0

第一個if已經在'或die()'子句中被覆蓋了。 – svens

+0

@svens添加說明。 –

+0

感謝您的代碼。它確實返回了50條記錄。但我不確定爲什麼下拉列表顯示爲空。 – nav100

1

嘗試直接對數據庫運行查詢,使用工具如MySql Workbench

SELECT state_id, state_code FROM states 

我懷疑目前還沒有結果。

更新:由於預計有50個結果...您可以嘗試此版本的次要更新並報告任何警告或錯誤,您可以看到。

<?php 
use error_reporting(E_ALL | E_STRICT); // Development use only! 

$link = mysql_connect("localhost:3306", "root", "root") or die ('Error connecting to mysql' . mysql_error()); 

mysql_select_db("mydb"); 

$sql = "SELECT state_id, state_code FROM states;"; 
$result = mysql_query($sql) or die(mysql_error()); 
?> 
<p> 
    <select name="vers"> 
    <?php 
    while($row = mysql_fetch_array($result)) { 
     echo '<option value="' . $row['state_id'] . '">' . $row['state_code'] . '</option>'; 
    } 
    ?> 
    </select> 
</p> 
<?php 
mysql_close($link); 
?> 
+0

當我對數據庫運行時,有50條記錄。 – nav100

0

我如何才能知道我的查詢返回的任何結果?

在您的數據庫服務器上運行您的查詢,而不是通過PHP並查看它是否返回任何結果。如果您使用MySQL的共享主機,許多主機提供了一個phpmyadmin接口,可讓您運行SQL命令。

0

首先,你應該檢查你的表「狀態」。如果它是空的,你的代碼是正確的。例如,您可以使用PhpMyAdmin - http://www.phpmyadmin.net。使用phpMyAdmin執行您的查詢