Php 无法创建mysql表

Php 无法创建mysql表,php,mysql,sql,database,mysqli,Php,Mysql,Sql,Database,Mysqli,我有一个桌子跟踪器项目,看起来像这样 tracker_item id heading trackerid 1 name 1 2 location 1 3 age 1 4 candidate 2 5 area 2 我希望使用标题下的参数根据trackerid创建不同的数据库表。 例如,根据上述表格跟踪工具项目,我希望创建两个表格 table1 id name location age

我有一个桌子跟踪器项目,看起来像这样

tracker_item

id  heading    trackerid
1    name         1
2    location     1
3    age          1
4    candidate    2
5    area         2
我希望使用标题下的参数根据trackerid创建不同的数据库表。 例如,根据上述表格跟踪工具项目,我希望创建两个表格

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

任何人都可以告诉我怎么做吗?

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

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


我讨厌人们说“我没走那么远…”或“这个网站不会公开…”或“它只供学校使用,所以安全不重要…”。如果老师和教授从一开始就不谈论安全问题,那他们就是做错了。挑战他们。他们正在教授草率而危险的编码实践,学生们以后将不得不放弃这些实践。我也讨厌人们说“我以后再添加安全性…”或“安全性现在不重要…”或“忽略安全风险…”。如果第一次没有时间做正确的事情,那么以后什么时候才能有时间添加它?

说,了解有关的语句。即使是这样也不安全@Jay Blanchard这只是一个在逻辑上工作的傀儡,我以后会处理安全问题,如果你能帮助我解决主要问题,我将不胜感激。错误来自我这边,你的代码已经工作了。非常感谢,关于你所说的安全性,我肯定会从第一天开始着手