使用表名填充列表框

时间:2010-11-15 13:21:39

标签: php html

我想用数据库中的表名填充列表框。这是我为它编写的代码,但它似乎不起作用

<select id="arrays" name="arrays" style="width: 403px;" class="Fieldcell">
<?php
$dbname = 'myBase';

if (!mysql_connect('localhost', 'root', '')) {
    echo 'Could not connect to mysql';
    exit;
}

$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

if (!$result) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysql_error();
    exit;
}

$num_tables = mysql_num_rows($result);


for($i=0;$i<$num_tables;$i++)
{

echo "<option value=\"$row[i]\">$row[i]</option>";

}

/*while ($row = mysql_fetch_row($result)) {

echo <option value=\"$row[0]\">$row[0]</option>";

}*/


mysql_free_result($result);
?>
</select>

3 个答案:

答案 0 :(得分:2)

注释掉的部分是使其有效的部分。您正在使用for循环,您尝试循环遍历从未定义的变量$ row。您需要使用mysql_fetch_row()来实际从结果集中获取数据。它看起来像你有,但后来评论说。为了lop而取消并取消注释while循环。虽然看起来你的while循环中有语法错误(缺少引号)。这是它应该是什么样子:

while ($row = mysql_fetch_row($result)) {
    echo "<option value='{$row[0]}'>{$row[0]}</option>";
}

OR

你可以保持现在的状态,但在你的for循环之上你需要添加

$row = mysql_fetch_all($result);

答案 1 :(得分:0)

<?php
echo '<select id="arrays" style="width: 403px;" class="Fieldcell">';
mysql_connect('localhost','root','') or die('Could not connect to mysql');
$result = mysql_query("SHOW TABLES FROM $dbname") or die("DB error, could not list tables<br />MySQL error: ".mysql_error());
while( $r = mysql_fetch_row($result)) {
    echo '<option value="'.$r[0].'">'.$[0].'</option>';
}
echo '</select>';
?>

试试这个。

答案 2 :(得分:0)

试试这个:

mysql_connect('localhost','root','pass'); //dont forget the correct password
$dbname=???; // insert the database name here
$thequery=mysql_query("SELECT * FROM $dbname");
echo '<select id="arrays" name="arrays" style="width: 403px;" class="Fieldcell">';
while($currow=mysql_fetch_array($thequery)) {
  echo '<option value="'.$currow(COLUMN NAME HERE).'">'.$currow(COLUMN NAME HERE).'</option>'; //insert the column name (the one that has the values inside)
}
echo '</select>';

旁注:以root身份使用数据库不是一个好主意。使用root帐户并不安全。