无法创建mysql表

时间:2016-07-13 12:22:58

标签: php mysql sql database mysqli

我有一个表tracker_item,看起来像这样

tracker_item

id  heading    trackerid
1    name         1
2    location     1
3    age          1
4    candidate    2
5    area         2

我希望使用跟踪标题下的参数根据trackerid创建不同的数据库表。 例如,根据上表tracker_item我希望创建2个表

table1

id  name location age


table 2
id  candidate  area

我尝试的代码是

$sql="SELECT * FROM `tracker_item` where trackerid='".$trackerid."' ";
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result)>0)
    {
        while($row = mysqli_fetch_assoc($result))
            {
                echo $sql1 = "CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

                        ".

                        $row['heading']


                        ."  VARCHAR(30) NOT NULL,


                resume VARCHAR(50)
                    )";

            }
                if (mysqli_query($con, $sql1))
                    {
                        echo "Table created successfully";
                    } 
                else 
                    {
                        echo "Error creating table: " . mysqli_error($con);
                    }  
    }

我得到的$ sql1的输出是

CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, resume VARCHAR(50) )
CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, location VARCHAR(30) NOT NULL, resume VARCHAR(50) )
CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, age VARCHAR(30) NOT NULL, resume VARCHAR(50) )

而不是多个表我想得到$ sql1的o / p看起来如下所示,以便可以在数据库中创建表

CREATE TABLE item ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, location VARCHAR(30) NOT NULL, age VARCHAR(50) )

任何人都可以告诉我们该怎么做

1 个答案:

答案 0 :(得分:2)

您只需要修改while循环并在循环之前执行CREATE。您只希望循环通过连接添加列:

if(mysqli_num_rows($result)>0)
   {
   $sql1 = "CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, ";
   while($row = mysqli_fetch_assoc($result))
   {
      $sql1 .= $row['heading']."  VARCHAR(30) NOT NULL, ";
   }
   $sql1 .= "resume VARCHAR(50)) ";

   if (mysqli_query($con, $sql1))
   {
       echo "Table created successfully";
   } 
   else 
   {
       echo "Error creating table: " . mysqli_error($con);
   }  
}

以这种方式连接整个查询,然后执行查询。

输出:

CREATE TABLE item (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, location VARCHAR(30) NOT NULL, age VARCHAR(30) NOT NULL, candidate VARCHAR(30) NOT NULL, area VARCHAR(30) NOT NULL, resume VARCHAR(50))

我讨厌当人们说“我不是那么远......”“这个网站不会公开......” “这只适用于学校,所以安全无关紧要......”。如果教师和教授从第一天开始就不谈安全问题,他们就错了。挑战他们。他们正在教授草率和危险的编码实践,学生们必须在以后忘记这些实践。当人们说,“我稍后会添加安全性......”“安全性现在不重要......”“我也讨厌它忽略安全风险......“。如果你第一次没有时间做正确的事,你什么时候才能找到时间来添加它?