我试图为客户端构建一个小部件,允许他们在不登录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);
?>
答案 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)
)";
让您的用户创建表通常不被认为是一个好主意,因为他们可能会弄乱它。如果它是相同的字段,每次将它们作为行存储在单个表中会更好。