如何创建一个名称基于表单输入的表?

时间:2012-03-04 02:18:45

标签: php sql

我试图为客户端构建一个小部件,允许他们在不登录phpMyAdmin的情况下创建新表,但是我失败了。

我无法弄清楚如何获取客户端在第1页中输入的一些文本,并使用它来创建第2页的表名。

帮助?

---------------------------------------------------------
PAGE 1
---------------------------------------------------------

<html>
<h2>Create Table</h2> 
</br>
<form action="/create_reg.php" method="post">
Table Name:<input type="text" name="title" />
</br>

<input type="submit" value="Create Table" />

</form>
</html>

---------------------------------------------------------
PAGE 2
---------------------------------------------------------

<?php

$con = mysql_connect("localhost","database","password");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
  }

//CREATE TABLE
mysql_select_db("database", $con);

$sql = "CREATE TABLE ???????
(
line1 varchar(19),
line2 varchar(19)
)";

if (!mysql_query($sql,$con))
 {
  die('Error: ' . mysql_error());
  }
echo "You have successfully created the table.";

mysql_query($sql,$con);

mysql_close($con);

?>

3 个答案:

答案 0 :(得分:0)

添加此内容:

if(isset($_POST['title'])==FALSE){ die('No Title Found.'); }
$name = mysql_real_escape_string($_POST['title']);
$sql = "CREATE TABLE $name 
(
    line1 varchar(19),
    line2 varchar(19)
)";

答案 1 :(得分:0)

$sql = "CREATE TABLE " . $_POST['title'] . "

当然这是非常不安全的,请确保将标题值提取到变量并检查它是否是有效的表名。

答案 2 :(得分:0)

表名现在位于$_POST['title']

所以你的查询应该是:

$sql = "CREATE TABLE " . mysql_real_escape_string($_POST['title']) . "
(
line1 varchar(19),
line2 varchar(19)
)";

让您的用户创建表通常不被认为是一个好主意,因为他们可能会弄乱它。如果它是相同的字段,每次将它们作为行存储在单个表中会更好。