<?php
$uname = $_POST['uservalue'];
$tblname="student".$uname;
$sql = "CREATE TABLE '$tblname' (col1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col2 VARCHAR(100) NOT NULL, col3 TEXT NOT NULL, col4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE = MyISAM";
mysql_query($sql);
mysql_query("INSERT INTO table2 (col1, col2, col3) VALUES ('value1', 'value2', 'value3')");
?>
我想创建一个表,其中使用表单从用户接受表表名,并同时在另一个表中插入一些值。 我已经尝试过上面的PHP脚本来做到这一点。插入查询工作正常,但不知道创建表查询有什么问题,表不是在数据库中创建的。 任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
查看函数mysql_query的文档:http://us3.php.net/mysql_query
让我们忽略它目前已被弃用的事实。
确保始终获取返回值(布尔值)并检查它是否成功(true)。
如果你弄错了,那么你可以找出mysql_error的错误。
尝试一下,如果错误不明显,请回来。
当然,事实上你也没有正确地将SQL语句连接在一起。
答案 1 :(得分:0)
首先 - 这可能只是大纲代码,但在数据库查询中使用时,请确保您从$ _POST或$ _GET数组中取出任何变量。特别是如果基于发布的数据创建表。 SQL注入非常重要 - 阅读本网站上的大量优秀教程和其他帖子。
我建议您的mysql用户可能没有&#39;创建&#39;数据库的权限 - 你检查了吗?
如果你错误地从mysql返回错误 - 你应该在你的PHP中有一些错误处理,但作为一个快速测试,你可以回显$ sql变量并尝试手动运行它phpmyadmin或在mysql命令行上追踪你的错误。
尝试修改创建SQL:
$sql = "CREATE TABLE '$tblname' (col1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col2 VARCHAR(100) NOT NULL, col3 TEXT NOT NULL, col4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE = MyISAM";
要:
$sql = "CREATE TABLE '".$tblname."' (col1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col2 VARCHAR(100) NOT NULL, col3 TEXT NOT NULL, col4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE = MyISAM";
这有什么不同吗? (即使如此,仍然应该考虑逃避)
答案 2 :(得分:0)
通过查看函数返回的内容以及错误消息(如果有)来尝试解决问题。代码如下。首先提出一些建议:
$tblname
附近的报价。col1
被声明为整数类型,但是你正在输入一个字符串'value1'
(尽管这会带来警告)。mysqli_*
函数。此外,您曾经创建的表格$tblname
为"student".$uname
,但您过去常常插入的表格为table2
。
所以,这是代码:
<?php
$uname = $_POST['uservalue'];
$tblname = "student".$uname;
$sql1 = "CREATE TABLE $tblname (col1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col2 VARCHAR(100) NOT NULL, col3 TEXT NOT NULL, col4 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP) ENGINE = MyISAM";
$sql2 = "INSERT INTO $tblname (col1, col2, col3) VALUES ('value1', 'value2', 'value3')";
//$conn stands for the connection reference of the mysql connection
if(!mysqli_query($conn, $sql1))
echo mysqli_error($conn);
if(!mysqli_query($conn, $sql2))
echo mysqli_error($conn);
?>