【问题标题】:not able to create mysql table无法创建mysql表
【发布时间】:2016-07-13 12:22:57
【问题描述】:

我有一个看起来像这样的表 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) )

谁能告诉我怎么做

【问题讨论】:

标签: php mysql sql database mysqli


【解决方案1】:

你只需要修改你的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))

我讨厌人们说 “我还没有那么远......”“这个网站不会公开......” “这只是为了学校,所以安全并不重要......”。如果教师和教授从一开始就没有谈论安全,那么他们就做错了。挑战他们。他们正在教授草率和危险的编码实践,学生以后将不得不忘记这些实践。我也讨厌人们说,“我稍后会添加安全性......”“安全性现在不重要......””忽略安全风险...”。如果第一次没有时间做对,以后什么时候有时间添加?

【讨论】:

  • 对不起,错误是我的,你的代码已经工作了。非常感谢您所说的安全性,肯定会从第一天开始工作
猜你喜欢
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2010-12-17
  • 2016-06-08
  • 2012-03-17
相关资源
最近更新 更多