尝试在HTML下拉列表中列出MySQL数据库名称

时间:2013-02-22 12:08:02

标签: php html mysql

此代码成功列出了数据库名称:

<?php
// Usage without mysql_list_dbs()
$link = mysql_connect('localhost', 'setlist', 'music');
$res = mysql_query("SHOW DATABASES");

while ($row = mysql_fetch_assoc($res)) {
    echo $row['Database'] . "\n";
}
?>

我想在HTML下拉列表中显示这些名称。我试图实现的代码是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
    <head>
         <title><!-- Insert your title here --></title>
    </head>
    <body>
        <div align="center">
            <select name="mydropdown">

            <?php
            // Usage without mysql_list_dbs()
            $link = mysql_connect('localhost', 'setlist', 'music');
            $querry = mysql_query("SHOW DATABASES");

            while ($row = mysql_fetch_assoc($query)) {
                echo '<option value="'.$row['Database'].'">'.$row['Database'].'</option>';
            }
            ?>
            </select>
        </div>
    </body>
</html>

起初我尝试在PHP脚本中包含<select name="mydropdown"></Select>,但格式似乎搞砸了。可能是格式化是搞乱这段代码的吗?

我对这些语言完全陌生,而且我的知识缺乏很可能也是错误的。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:4)

$querry = mysql_query("SHOW DATABASES");

应为$query

另外:给自己一个体面的IDE,打开PHP错误并查看PDOMySQLi,因为mysql_-exension位于deprecation process

答案 1 :(得分:2)

代码中存在变量不匹配。

$querry更改为$query

您在这里使用$query

$row = mysql_fetch_assoc($query)

答案 2 :(得分:0)

检查这个

$querry = mysql_query("SHOW DATABASES");
while ($row = mysql_fetch_assoc($query)) {

你在$query拼写错误。

答案 3 :(得分:0)

  1. 始终将数据库操作与输出分开。它不仅可以制作您的代码,还可以帮助发现问题 因此,始终先获取所有数据,然后才开始输出。
  2. 让自己成为帮助类或函数,以消除代码中所有无用的重复。
  3. 因此,代码变为

    <?php
    $db = new DB();
    $data = $db->getCol("SHOW DATABASES");
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
        <head>
             <title><!-- Insert your title here --></title>
        </head>
        <body>
            <div align="center">
                <select name="mydropdown">
     <? foreach ($data as $name): ?>
                     <option><?=htmlspecialchars($name)?></option>
     <? endforeach ?>
                </select>
            </div>
        </body>
    </html>
    

答案 4 :(得分:-1)

尝试

不要使用已被弃用的mysql_*。使用mysqli_*PDO

<?php
// Usage without mysql_list_dbs()
$link = mysqli_connect('localhost', 'root', '')or die(mysqli_error());
$query = mysqli_query("SHOW DATABASES")or die(mysqli_error());

echo '<select name="databases" id="databases">';
while ($row = mysqli_fetch_assoc($query))
{
   echo '<option value = "'.$row['Database'].'">'.$row['Database'].'</option>';
}
echo "</select>";
?>

</div>
</body>
</html>

$query的拼写错误,请更改您的数据库连接设置。