制作 PHP 下拉框从 SQL 数据库中提取数据

Posted

技术标签:

【中文标题】制作 PHP 下拉框从 SQL 数据库中提取数据【英文标题】:Making a PHP dropdown box pull data from an SQL database 【发布时间】:2020-07-08 23:37:30 【问题描述】:

所以几天来我一直在努力让它工作,但我完全迷失了。我已尝试关注此处的一些答案,但我似乎无法弄清楚我需要更改哪些内容以使其适应我的数据库。

我见过复杂而简单的解决方案,但我现在正在尝试的是:

...

    <?php
    echo "";

    define('DB_USER', 'username');
    define('DB_PASSWORD', 'password');
    define('DB_HOST', 'localhost');
    define('DB_NAME', 'username_test');

    $dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die('Could not connect to MySQL: ' . mysqli_connect_error() );

    mysqli_set_charset($dbc, 'utf8');

?>
<?php 
    public function get_data()
    
       $mysqli= new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME) or die("Couldn't    connect".mysqli_connect_error());
       $sql="SELECT Staff_Surname, Staff_Forename FROM users";
       $result=$mysqli->query($sql) or die($mysqli->error);
          while ($row=$result->fetch_array(MYSQLI_ASSOC)) 
          
            echo "<option value=\"".$row["Staff_Surname"]."\"  selected>".$row["Staff_Forename"]."</option>";
          
       
?>

<html>

<body>
<select name="abc" id="xyz">
    <?php  get_data(); ?>
</select>


</body>

</html>

...

当我尝试在浏览器中运行它时,这只会导致一堆错误。我正在使用 Microsoft Expression Web 4 和 XAMPP。

这是一个 SQL 数据库的截图,我只需要将名字和姓氏拉到一个下拉框中: SQL database

如果你们能提供任何帮助,我们将不胜感激。谢谢。

抱歉,在预览中它似乎显示了错误所在。当我尝试在浏览器中运行代码时,我得到了这个:enter image description here

【问题讨论】:

错误信息是什么?为什么在函数中再次连接 - 你已经有连接,将其作为参数传递给函数... option 标签中应该只有一个selected,但这不是主要问题) $row["Staff_Surname"] 中可能有一个" 发布生成的 HTML 也会有所帮助 “只会导致一堆错误” - 考虑与我们分享它们吗?如果我们知道您需要 with 的帮助,我们会更轻松地提供帮助。 【参考方案1】:

注意:使用未定义的常量 DB_PASS - 在第 17 行的 index.php 中假定为“DB_PASS”警告:mysqli::__construct(): (HY000/1045): index.php 中的用户 'username'@'localhost' 访问被拒绝(使用密码:YES)第 17警告:mysqli::query():无法在 index.php 中获取 mysqli 行 19警告:get_data():无法在 19 行的 index.php 中获取 mysqli b>

改变

$mysqli= new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME) or die("Couldn't    connect".mysqli_connect_error());

$mysqli= new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME) or die("Couldn't    connect".mysqli_connect_error());

解析错误:语法错误,意外的“公共”(T_PUBLIC),预计 index.php 中的文件结尾在 15

改变

public function get_data()

function get_data()

这些更改应该会处理您收到的所有错误。

【讨论】:

我尝试进行您建议的更改,但它仍然不想播放。 @Dave - 您确定您拥有正确的数据库用户名和密码吗?使用您更新的代码,我得到了预期的输出。 @stealthhyninja 我很确定我使用了正确的用户名和密码,我什至尝试过恢复为 root 和空白。但我似乎无法让它工作。更重要的是,即使我之前制作的可以连接的测试页面现在也出现错误。我的 XAMPP 一定有什么问题。将在我的第二个答案中发布一些屏幕截图。【参考方案2】:

带有@stealthyninja 编辑的代码:

    <?php
    echo "";

    define('DB_USER', 'username');
    define('DB_PASSWORD', 'password');
    define('DB_HOST', 'localhost');
    define('DB_NAME', 'username_test');

    $dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die('Could not connect to MySQL: ' . mysqli_connect_error() );

    mysqli_set_charset($dbc, 'utf8');

?>
<?php 
    function get_data()
    
       $mysqli= new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die("Couldn't connect".mysqli_connect_error());
       $sql= "SELECT Staff_Surname, Staff_Forename FROM users";
       $result= $mysqli->query($sql) or die($mysqli->error);
          while ($row=$result->fetch_array(MYSQLI_ASSOC)) 
          
            echo "<option value=\"".$row["Staff_Surname"]."\"selected>".$row["Staff_Forename"]."</option>";
          
       
?>

<html>

<body>
<select name="abc" id="xyz">
    <?php get_data(); ?>
</select>


</body>

</html>

编辑:

连接到 MySQL 的问题。首先是用户名和密码 这里:login info XAMPP 控制面板:XAMPP 之前有效的测试代码:Registration 现在出现的错误:Registration Error

我认为我没有改变以前工作时的任何内容。我按照 Larry Ullman 所著的“动态网站的 PHP 和 MySQL 第五版”一书中的教程构建了注册页面。

【讨论】:

以上是关于制作 PHP 下拉框从 SQL 数据库中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

php中sql查询的列名

PHP/HTML 在 sql 查询的下拉列表中显示选定的选项

php ajax依赖下拉列表不从表中加载数据

使用 html 下拉列表输入的 php 中的 SQL 查询

从下拉列表中显示数据php

将数据框从 R 插入 SQL 的有效方法