在php中同时使用insert和create query

时间:2013-11-30 19:02:44

标签: php

    <?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脚本来做到这一点。插入查询工作正常,但不知道创建表查询有什么问题,表不是在数据库中创建的。 任何帮助将不胜感激。提前谢谢。

3 个答案:

答案 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)

通过查看函数返回的内容以及错误消息(如果有)来尝试解决问题。代码如下。首先提出一些建议:

  1. 您不需要$tblname附近的报价。
  2. col1被声明为整数类型,但是你正在输入一个字符串'value1'(尽管这会带来警告)。
  3. 不要使用mysql_ *函数(它们已被弃用且不安全)。请改用mysqli_*函数。
  4. 此外,您曾经创建的表格$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);
    
    ?>