使用for循环在PHP中创建具有整数名称的表

使用for循环在PHP中创建具有整数名称的表,php,Php,我试图用PHP在SQL中创建多个表,这些表需要在1920年到2017年之间用数字命名。我使用的是for循环,但由于在PHP是新手,我的代码似乎不起作用。回馈没有错误,也没有回馈任何东西。我做错了什么。任何帮助都将不胜感激 <?php $con = new mysqli("---", "---", "---", "---"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_con

我试图用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);
?>

此行不正确

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

for($i=1920;i即使我认为如果您需要创建所有这些表,存在设计错误,代码中也几乎没有错误

for中缺少$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中看到错误。

正如前面所说的,您不想创建所有这些表。真的,您不想。

改为增加一个
Year
字段,并按年份对应用程序进行分组或排序,或其他任何操作。因此,您只需要一个具有灵活排序和分组功能的表。

以下是一种更好的方法:

CREATE TABLE years
(
    year int(4),
    site_coordinator VARCHAR(66),
    announcements VARCHAR(1000),
    description VARCHAR(1000)
)
如果要插入(例如)2004年的数据,而不是像原始设计那样插入数据,请执行以下操作:

插入INT0 2004(站点协调人、公告、说明)值…

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

插入年份(年份、现场协调人、公告、说明)值(2004年,“xxx”、“xxx”、“xxx”)…

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

从年份=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

专栏中有一个拼写错误的更正,你确定要创建那97个表吗?相信我,你不想创建所有这些表。似乎不是一个经过良好验证的架构,请你回答,但在Shakar的评论之后,我决定用mul创建一个表会更明智多列。很抱歉浪费了你的时间。还有,丢失的$是在输入信息时的一个输入错误,这不是我的原始代码…对此也很抱歉
<?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);
?>