创建数据库

时间:2016-06-01 22:18:55

标签: php mysql pdo

这段代码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

这是创建的下拉代码,您可以运行它来查看它的实际效果。

&#13;
&#13;
<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;
&#13;
&#13;

我想要做的是更改此行$sql="SELECT name,id FROM student order by name";,以便下拉列表中包含数据库中的所有表格,例如show tables鉴于我提供的内容可以轻松完成吗?或者我应该使用其他方法吗?如果我只能显示某些表格,例如以Tab开头的表格。

像这样

&#13;
&#13;
<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;
&#13;
&#13;

EDIT1 这些是我认为我需要改变的路线;但这是我的问题 $sql="SHOW tables";

echo "<option value=$row[id]>$row[name]</option>";

2 个答案:

答案 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>';