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