【问题标题】:Creating Dropdown list from sql database in PHP在 PHP 中从 sql 数据库创建下拉列表
【发布时间】:2017-07-18 20:07:43
【问题描述】:

*当我将“die”的条件复制到问题中时,我的代码错误地忽略了它。我把它放回去了。

我知道这个问题可能看起来很重复,但我在其他任何问题中都没有找到答案。我正在尝试根据数据库中的列创建一个下拉列表。我尝试了两种不同的方法,但都没有给我正确的结果。有谁知道这样做的正确方法?

我在其他 StackOverflow 答案中看到的第一种方式(Fetching data from MySQL database to html drop-down listFetching data from MySQL database to html dropdown list)。我的代码如下:

<?php
 $connect = mysql_connect('localhost', 'root');
 if ($connect == false)
   {
     die  ("Unable to connect to database<br>");
  }

$select = mysql_select_db('ViviansVacations');
if ($select == false)
   {
    die ("Unable to select database<br>");
  }
$query = "SELECT * FROM Destinations";
$result = mysql_query($query);
 ?>
 <select name="select1">
 <?php


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

NetBeans 向我发送一条错误消息,提示“在此上下文中元素 'select' 中不允许使用文本”。

我尝试的第二种方法:

<?php 
 $connect = mysql_connect('localhost', 'root'); 
  { 
   die  ("Unable to connect to database<br>");
  }
  $select = mysql_select_db('ViviansVacations'); 
  {
   die ("Unable to select database<br>");
  }
  $query = "SELECT * FROM Destinations";
  $result = mysql_query($query);
?>
<select name="select1">
<?php
  while ($line = mysql_fetch_array($result))
  {
?>
 <option value="<?php echo $line['Europe'];?>"> <?php echo 
 $line['field'];?> </option>
<?php
  }
?>
</select> 

此代码没有产生任何错误。但是,表单内部是开头的 php 行,后面是一个空的下拉框:

"); } $select = mysql_select_db('ViviansVacations'); { die ("无法选择数据库 "); } $query = "SELECT * FROM Destinations"; $result = mysql_query($query); ?>

【问题讨论】:

  • 文件扩展名是.php吗?尤其是你的第二个例子。
  • @SloanThrasher 同样的问题。
  • 您是在独立的 .php 脚本中使用上述脚本还是在 ajax 场景中调用它?
  • 谢谢大家的帮助! @Sloan 错误是我的文件是 .html ,因为我最初将它制作为 html 表单。再次感谢。

标签: php mysql


【解决方案1】:

所以你的方法有很多问题。首先,您使用的是已弃用的 mysql_* 函数,这是个坏主意,其次您没有正确调试数据库连接:

$connect = mysql_connect('localhost', 'root');
   {
     die  ("Unable to connect to database<br>");
  }

在上面的代码中,die 语句将始终执行停止进一步执行。

还要确保数据库ViviansVacations和表Destinations和列Europe以正确的名称存在(遵循标准并尝试使用所有小写字母进行数据库/表/列命名)

正确的mysqli_*方法是(在本地测试并且选择框形式正确):

<?php
$db = 'ViviansVacations';

$mysqli = new mysqli('localhost', 'root', '', $db);

if($mysqli->connect_error) 
  die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());


$query = "SELECT * FROM Destinations";
$result = mysqli_query($mysqli, $query);

?>

<select name="select1">
<?php
while ($row = mysqli_fetch_array($result)) {
    echo "<option value='" . $row['Europe'] . "'>" . $row['Europe'] . "</option>";
}
?>
</select>  

【讨论】:

    【解决方案2】:

    有几件事需要您验证和纠正。

    首先,您的数据库连接代码似乎不正确。我没有看到您应该调用die 的任何条件。

    $connect = mysql_connect('localhost', 'root');
    {
    die  ("Unable to connect to database<br>");
    }
    

    从上面的代码中,下面的行将一直执行

     die  ("Unable to connect to database<br>");
    

    你应该更正你的数据库连接代码到下面:

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    

    使用方法可以参考mysql_connect

    另外,请确认您的文件扩展名是.php

    【讨论】:

      【解决方案3】:

      主要是您的问题是数据库连接。试试这个 -

      <?php
      mysql_connect("localhost", "root", "") or
          die("Could not connect: " . mysql_error());
      mysql_select_db("your_db");
      
      $result = mysql_query("SELECT * FROM your_table");
      
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          print_r($row);
          echo "<br>";
      }
      
      mysql_free_result($result);
      ?>
      

      【讨论】:

        【解决方案4】:

        可能有几个问题:

        • 使用mysqli_connect而不是mysql_connect,因为mysql已经被贬值了
        • 将第三个参数设为空 `mysqli_connect('localhost', 'root', '');//按照标准
        • 调试您的代码,例如:(print_r($connect),在 phpmyadmin、print_r($result) 中执行您的查询,然后在循环中执行 print_r($row)

        最后,我相信你会得到你想要的结果,你也会详细了解发生了什么。

        【讨论】:

        • 它已被“弃用”。这可能会也可能不会对其货币价值产生不利影响。
        【解决方案5】:

        您可能想尝试使用它。dept_id 和描述您必须根据您的数据库进行更改。希望这会对您有所帮助

         <?php 
          $sql = mysql_query("SELECT dept_id ,description FROM department 
          ORDER BY dept_id ASC");
          db_select($sql,"dept_id",$dept_id,"","-select Department-","","");
          ?>
        

        【讨论】:

          猜你喜欢
          • 2015-01-06
          • 2010-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-18
          • 2015-12-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多