下拉列表为空

时间:2011-10-17 14:54:29

标签: php mysql

我的下拉列表显示为空。我不确定我的查询是否返回任何记录。如何确定我的查询是否返回任何结果?这是我的代码。请告诉我。我坚持这个问题。

 <?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); 
            ?> 

5 个答案:

答案 0 :(得分: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>";   
    }
  }

<强>更新

添加一个空的默认选项。确保其value属性不是您要从数据库中检索的内容。

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

答案 1 :(得分: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); 
?> 

答案 2 :(得分:0)

  

如何查看我的查询是否返回任何结果?

在数据库服务器上而不是通过PHP运行查询,看看它是否返回任何结果。如果您使用MySQL共享主机,许多主机提供了一个phpmyadmin接口,允许您运行SQL命令。

答案 3 :(得分:0)

您可以使用mysql_num_rows了解$result

中有多少元素

答案 4 :(得分:0)

首先,您应该检查表格“状态”。如果它是空的,那么您的代码是正确的。例如,您可以使用PhpMyAdmin - http://www.phpmyadmin.net。使用phpMyAdmin执行查询