Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP的mySQL下拉列表不显示数据库中的选项_Php_Html_Mysql - Fatal编程技术网

使用PHP的mySQL下拉列表不显示数据库中的选项

使用PHP的mySQL下拉列表不显示数据库中的选项,php,html,mysql,Php,Html,Mysql,我在网上看了一些其他的问题,这里也有一些与此相关的问题,但似乎没有一个真正遇到我的错误 我编写了我的PHP代码并将其实现到HTML中,出现了下拉框,但它实际上不想显示任何值。我的代码中是否应该包含任何实现或修复?我如何让它工作 我的数据库名为:Treatments 我希望显示的数据库列名为:Treatment treatment\u dropdown.php <?php $hostname = 'host_name'; $dbname = 'database_name';

我在网上看了一些其他的问题,这里也有一些与此相关的问题,但似乎没有一个真正遇到我的错误

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

我的数据库名为:
Treatments

我希望显示的数据库列名为:
Treatment

treatment\u 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:


考虑更改此行:

$query = "SELECT * FROM 'Treatments'";
要使用反勾号而不是单引号,请执行以下操作:

$query = "SELECT * FROM `Treatments`";
在我的测试查询中,由于这个原因我得到了一个错误,请告诉我这是否有帮助

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

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

    添加到HTML文件的顶部。这将允许您访问
    $options
    字符串,以便在该文件中使用它。请注意,为了使其正常工作,
    treatment\u dropdown.php
    需要与HTML文件位于同一目录中。如果不是,则需要更改include语句以反映适当的文件路径。

    以下是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>";
    }
    

    注:

  • 不要使用mysql函数,它们不安全,请使用PDO
  • 表名不需要用单引号括起来
  • mysql\u查询希望参数1是查询,而不是数据库连接
  • 您可能应该检查是否未找到任何结果

  • HTML是否在一个单独的文件(不是
    treatment\u dropdown.php
    )中?如果是,您是否在HTML文件中包含
    d
    treatment\u dropdown.php
    ?是否希望在表名周围使用反勾号而不是单引号?是的,这是一个单独的文件。我已经将其作为一个类包含,但我认为这是不对的,这可能是导致它的原因。您的选项也没有
    属性。你真的需要阅读一些教程。
    First choice
    对于PHP来说是新手,这正是为什么你应该阅读一些教程,而不是问每一件简单的事情。不是恨,只是想帮你少浪费时间。我只是这样做了,编辑了这篇文章。不幸的是,这并没有改变它:(除非你的连接出现问题,否则这应该是可行的,你能尝试在phpmyadmin或终端中运行查询吗?如果它可行,那么我们可以将其缩小到你的连接代码。给我这个:
    mysql\u query()期望参数1是字符串,给定的资源是:
    mysql\u fetch\u array()如果
    mysql\u query
    的参数顺序错误,则参数1应为resource,null。现在一切正常,谢谢!竖起大拇指!很高兴我能提供帮助!顺便说一句,请注意其他答案和评论中关于不要使用过时的mysql函数的建议。
    <?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>";
    }