使用for循环在PHP中使用整数名创建表

时间:2014-01-19 18:05:31

标签: php

我正在尝试用PHP在SQL中创建多个表,这些表需要在1920年到2017年之间用数字命名。我使用for循环,但是在PHP中是新的,我的代码似乎不起作用。没有给出任何错误,也没有回复任何错误。我究竟做错了什么。任何帮助将不胜感激!

<?php
$con = new mysqli("---", "---", "---", "---");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

for($i = 1920; i<=2017; $i++)
{
    $sql="CREATE TABLE `".$i."` (site_coordinator VARCHAR(66),aanouncements VARCHAR(1000),description VARCHAR(1000)";

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

mysqli_close($con);
?>

4 个答案:

答案 0 :(得分:1)

此行不正确

for($i = 1920; i<=2017; $i++)

应该是

for($i = 1920; $i<=2017; $i++)

你错过了$

答案 1 :(得分:0)

即使我认为如果您需要创建所有表格,也存在设计误解,您的代码中几乎没有错误

查询中缺少$ in,查询中没用引号,查询末尾缺少括号。

这是正确的代码:

<?php
$con = new mysqli("---", "---", "---", "---");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

for($i = 1920; $i<=2017; $i++)
{
    $sql="CREATE TABLE ".$i." (site_coordinator VARCHAR(66),aanouncements VARCHAR(1000),description VARCHAR(1000))";

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

mysqli_close($con);
?>

要轻松调试,使用echo $sql之类的内容打印查询,然后手动执行查询,您将看到mysql中的错误。

答案 2 :(得分:0)

正如已经说过的那样,您不想创建所有这些表。真的,你没有。
换一个额外的Year字段,然后按年份制作您的应用程序组,或排序等等。因此,您只需要一个具有灵活排序和分组功能的单个表。

答案 3 :(得分:0)

这是一个更好的方法,你正在尝试做什么:

CREATE TABLE years
(
    year int(4),
    site_coordinator VARCHAR(66),
    announcements VARCHAR(1000),
    description VARCHAR(1000)
)

如果要插入2004年的数据,而不是像原始设计那样插入数据:

INSERT INT0 2004 (site_coordinator, announcements, description) VALUES ...

您将使用单个表使用年份列,如下所示:

INSERT INTO years (year, site_coordinator, announcements, description) VALUES (2004, "xxx", "xxx", "xxx") ...

如果要获取特定年份的所有行,请执行以下操作:

SELECT * FROM years WHERE year = 2004

因此,生成的PHP代码就像这样简单:

<?php
$con = new mysqli("---", "---", "---", "---");

if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="CREATE TABLE `years` (year INT(4), site_coordinator VARCHAR(66), announcements VARCHAR(1000), description VARCHAR(1000) )";

// Execute query
if (mysqli_query($con,$sql))
{
    echo "Table years created successfully";
}
else
{
    echo "Error creating table: " . mysqli_error($con);
}

mysqli_close($con);
?>

请注意列announcements

的拼写错误更正