这段代码below连接到数据库(使用config.php),然后创建下面的下拉列表。
include "config.php"; // Database connection using PDO
//$sql="SELECT name,id FROM student";
$sql="SELECT name,id FROM student order by name";
/* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */
echo "<select name=student value=''>Student Name</option>"; // list box select command
foreach ($dbo->query($sql) as $row){//Array or records stored in $row
echo "<option value=$row[id]>$row[name]</option>";
/* Option values are added by looping through the array */
}
echo "</select>";// Closing of list box
这是创建的下拉代码,您可以运行它来查看它的实际效果。
<br>
<br> The list box is here
<select name=student value=''>Student Name</option>
<option value=1>John Deo</option>
<option value=2>Max Ruin</option>
<option value=3>Arnold</option>
<option value=4>Krish Star</option>
<option value=5>John Mike</option>
<option value=6>Alex John</option>
<option value=7>My John Rob</option>
<option value=8>Asruid</option>
<option value=9>Tes Qry</option>
<option value=10>Big John</option>
<option value=11>Ronald</option>
<option value=12>Recky</option>
<option value=13>Kty</option>
<option value=14>Bigy</option>
<option value=15>Tade Row</option>
<option value=16>Gimmy</option>
<option value=17>Tumyu</option>
<option value=18>Honny</option>
<option value=19>Tinny</option>
<option value=20>Jackly</option>
<option value=21>Babby John</option>
<option value=22>Reggid</option>
<option value=23>Herod</option>
<option value=24>Tiddy Now</option>
<option value=25>Giff Tow</option>
<option value=26>Crelea</option>
<option value=27>Big Nose</option>
<option value=28>Rojj Base</option>
<option value=29>Tess Played</option>
<option value=30>Reppy Red</option>
<option value=31>Marry Toeey</option>
<option value=32>Binn Rott</option>
<option value=33>Kenn Rein</option>
<option value=34>Gain Toe</option>
<option value=35>Rows Noump</option>
</select>
<br>
<br>
&#13;
我想要做的是更改此行$sql="SELECT name,id FROM student order by name";
,以便下拉列表中包含数据库中的所有表格,例如show tables
。 鉴于我提供的内容可以轻松完成吗?或者我应该使用其他方法吗?如果我只能显示某些表格,例如以Tab
开头的表格。
<br>
<br> The list box is here with available tables
<select name=student value=''>TableName</option>
<option value=1>Table1</option>
<option value=2>Table2</option>
<option value=3>Table3</option>
</select>
<br>
<br>
&#13;
EDIT1 这些是我认为我需要改变的路线;但这是我的问题
$sql="SHOW tables";
echo "<option value=$row[id]>$row[name]</option>";
答案 0 :(得分:0)
我测试了这个,它使用我的服务器工作。 table_schema ='yourDBname'是关键,因为否则你可以得到几十个随机表。
select table_name from information_schema.tables where table_schema='yourDBname'
您应该能够用此替换您的查询并执行相同类型的下拉菜单。出于安全原因,您确定要让人们知道您的表名吗?
答案 1 :(得分:0)
您可以按照建议使用SHOW TABLES
或从INFORMATION_SCHEMA.TABLES
中选择来获取特定架构的表名,并且可以使用任一方法按部分表名称进行过滤。
$stmt = $dbo->query("SHOW TABLES FROM your_schema LIKE 'Tab%'");
或
$stmt = $dbo->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='your_schema' AND TABLE_NAME LIKE 'Tab%'");
其中任何一个都应该给你相同的结果。
$stmt
将是PDOStatement
个对象。您可以使用其fetchColumn
方法将表名称作为<option>
值的单个值。这样,如果您决定使用该查询,SHOW TABLES
生成的奇数“列名称”不会导致问题。
echo '<select name="tables">';
while ($table_name = $stmt->fetchColumn()) {
echo "<option value=\"$table_name\">$table_name</option>";
}
echo '</select>';