2011-10-17 52 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执行您的查询