1

首先也是最重要的第一次发布问题对我来说很容易:)

我正在尝试使用 PHP/MySQL 生成一个 `Form DropDownList (Select/options)。我需要使用仅包含“.com”的数据库中的表名自动填充的选项

这是我当前的代码:

<?php
$con = mysql_connect("localhost","username","password");
$db = mysql_select_db("dbname",$con);
$result = mysql_query("SHOW TABLES LIKE '%.com%'",$con) or die('cannot show tables');
while($tableName = mysql_fetch_row($result)) {
$table = $tableName[0];
}
;
$option .= '<option value = "website-manager.php?table='.$table.'">'.$table.'</option>';
?>
<form name="form" id="form">
  <select name="jumpMenu" id="jumpMenu">
    <option value="#">Select Website</option>
    <?php echo $option ; ?>
  </select>
  <input type="button" name="go_button" id= "go_button" value="Go" onclick="MM_jumpMenuGo('jumpMenu','parent',0)" />
</form>

当我使用此代码时,只填充一个表名,而不是我数据库中当前的 15 个。

如何更正上面的代码以填充所有表名?

4

2 回答 2

2

问题是您正在$table通过数据库结果集覆盖每次迭代。

您需要将数据放入这样的数组中:

$tables = array();
while ($tableName...) {
    $tables[] = $tableName[0];
}

然后在这样的循环中输出您的选项:

<option value="#">Select Website</option>
<?php
foreach($tables as $table) {
    echo '<option value="website-manager.php?table=' . urlencode($table) .'">' . $table . </option>';
}
?>
于 2013-11-04T22:33:23.780 回答
0

正如}下面建议的 while end 移动 - 尝试用这个替换部分:

<?php
$filter = '%wp_%';
$con = mysql_connect("localhost","root","pwd");
$db = mysql_select_db("enterDbName",$con);
$result = mysql_query("SHOW TABLES LIKE '".$filter."'",$con) or die('cannot show tables');
$option = '';
while($tableName = mysql_fetch_row($result)) {
    $table = $tableName[0];
    $option .= '<option value = "website-manager.php?table='.$table.'">'.$table.'</option>';
}
?><form name="form" id="form">
    <select name="jumpMenu" id="jumpMenu">
        <option value="#">Select Website</option>
        <?php echo $option ; ?>
    </select>
    <input type="button" name="go_button" id= "go_button" value="Go" onclick="MM_jumpMenuGo('jumpMenu','parent',0)" />
</form>

警告:此扩展 ( mysql) 自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

于 2013-11-04T23:42:37.350 回答