我想用数据库中的表名填充列表框。这是我为它编写的代码,但它似乎不起作用
<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>
答案 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帐户并不安全。