2015-12-21 142 views
-1

我看了一些其他问题在线和在这里与此有关,但没有一个看起来真的真的遇到我的错误。使用PHP mySQL下拉式不显示数据库选项

我写了我的PHP代码,并将其实现到我的HTML中,我得到下拉框出现,但它实际上并不想显示任何值。我的代码中是否包含任何实现或修复?我如何使它起作用?

我的数据库名为:Treatments

我的,我想显示的就是所谓的数据库列:Treatment

treatment_dropdown.php

<?php 

    $hostname = 'host_name'; 
    $dbname = 'database_name'; 
    $username = 'username'; 
    $password = 'password'; 

    $con=mysql_connect($hostname,$username,$password,$dbname) or die("Failed to connect to MySQL: " . mysql_error()); 
    $db=mysql_select_db($dbname,$con) or die("Failed to connect to MySQL: " . mysql_error()); 


    $query = "SELECT * FROM `Treatments`"; 

    $result = mysql_query($con, $query); 
    $options = ""; 
    while ($row = mysql_fetch_array($result)){ 
     $options = $options . "<option>$row[1]</option>"; 
    } 


?> 

HTML:

<body> 
    <select> 
     <?php 
      echo $options; 
     ?> 
    </select> 
</body> 
+0

HTML是在一个单独的文件(而不是'treatment_dropdown.php')?如果是,是否在HTML文件中包含'treatment_dropdown.php'? –

+1

难道你不想在表名周围使用反引号而不是单引号? –

+0

是的它是一个单独的文件。我已经把它作为一个班级加入了,但我认为这是不对的,这可能是导致它的原因。 –

回答

2

考虑更改这一行:

$query = "SELECT * FROM 'Treatments'"; 

使用反引号,而不是单引号,像这样:

$query = "SELECT * FROM `Treatments`"; 

在我的测试查询我得到了,因为这样的错误,让我知道是否有帮助。

+0

我刚刚做了,并编辑了这篇文章。不幸的是,它不会改变它:( –

+0

这真的应该工作,除非你的连接有问题,你可以尝试运行在phpmyadmin或在终端的查询?如果它的工作,那么我们可以缩小它的连接代码。 –

0
  1. 不要使用mysql _ *()函数,它们已被弃用。改用mysqli或PDO。
  2. 无论哪个库用于访问mysql,都要单独检查sql代码中的错误。 sql代码中的错误不会导致php代码中的错误。
  3. 在这种特殊情况下,问题在于您将表格包含在单引号中而不是反引号中。

正确的代码:

$query = "SELECT * FROM `Treatments`"; 
1

添加<?php include 'treatment_dropdown.php'; ?>到HTML文件的顶部。这应该使您能够访问$options字符串,以便可以在该文件中使用它。请注意,为了实现此目的,treatment_dropdown.php需要与HTML文件位于同一目录中。如果不是,则include语句将需要更改以反映适当的文件路径。

+0

给我这个:'mysql_query()期望参数1是字符串,给出的资源' –

+0

和这个:'mysql_fetch_array()期望参数1是资源,null给出' –

+0

您对'mysql_query'的参数的顺序是错误的。 –

0

这是你的PHP文件应该是什么样子:

<?php 

$hostname = 'localhost'; 
$dbname = 'Treatments'; 
$username = 'root'; 
$password = ''; 

$con = mysql_connect($hostname, $username, $password, $dbname) or die("Failed to connect to MySQL: " . mysql_error()); 
$db = mysql_select_db($dbname,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

/* No single quotes needed for the table name. */ 
$query = "SELECT * FROM Treatments"; 

/* First parameter should be $query not $con */ 
$result = mysql_query($query, $con); 
$options = ""; 

/* Check if no results exist. */ 
if (!$result) { 
    die("NO results found."); 
} 

while ($row = mysql_fetch_array($result)) { 
    $options .= "<option>$row[treatment]</option>"; 
} 

>

注:

  1. 不使用mysql_ *函数,他们并不安全,使用PDO来代替。
  2. 您的表名不需要用单引号括起来。
  3. mysql_query预计参数1是查询而不是数据库连接。
  4. 您应该检查是否找不到结果。
相关问题