Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将一个表复制到另一个具有不同列数的表_Php_Mysql - Fatal编程技术网

Php 将一个表复制到另一个具有不同列数的表

Php 将一个表复制到另一个具有不同列数的表,php,mysql,Php,Mysql,由于我远非php专家,这让我目瞪口呆,我似乎无法为它编写脚本 让我们看看我是否能尽可能清楚地解释这一点 假设我有表1和表2 表1=团队ID、名称、round1pos、round1score、round2pos、round2score 表2=id、tournamentid、teamid、姓名、round1pos、round1score、round2pos、round2score…直到round10pos/round10score 当从表1复制到表2时,我想在它前面添加两个字段。id和tourn

由于我远非php专家,这让我目瞪口呆,我似乎无法为它编写脚本

让我们看看我是否能尽可能清楚地解释这一点

假设我有表1和表2

表1=团队ID、名称、round1pos、round1score、round2pos、round2score

表2=id、tournamentid、teamid、姓名、round1pos、round1score、round2pos、round2score…直到round10pos/round10score

当从表1复制到表2时,我想在它前面添加两个字段。id和tournamentid

我面临的问题是表1每次都有不同数量的roundxpo/roundxscore

基本上,我想做的是,一旦比赛结束,我想删除表格。但将其中的数据复制到另一个表以归档结果。但每场比赛都有不同大小的回合


我希望有人能理解我想要达到的目的+。

您应该创建第三个表,从现有表中删除roundX列,并用它们的ID引用它们

rounds: team_id, tournament_id, no, pos, score

您应该规范化您的表,但同时。。。。 我假设主要问题是处理代码中数量可变的RoundXPO和roundxscore列

希望这有助于:

获取此查询的结果:显示表1中的列,其中的字段类似于“round%pos” 获取此查询的结果:显示表1中的列,其中的字段类似于“round%score” 通过循环字段名创建table2插入

//example, assuming results are fetched into an associative array
$query = "INSERT INTO table2 (tournamentid, teamid, name)";
foreach($roundpos_fields as $f){  $query .= "," . $f['Field'];  }
foreach($roundscore_fields as $f){  $query .= "," . $f['Field'];  }
$query .= "( SELECT $tournamentid, '' teamid, name"; 
foreach($roundpos_fields as $f){  $query .= "," . $f['Field'];  }
foreach($roundscore_fields as $f){  $query .= "," . $f['Field'];  }        
$query .= ")";

这听起来像是一个非常糟糕的桌子设计。您可以更改它吗?您可以尝试规范化您的数据库,这样您就不必使用roundX任何东西,而是使用另一个关联的表,该表的tournamentID作为外键。此外,我从未见过删除一个表的需要,该表本身可以作为存档,尤其是因为数据库用户可能无权执行该命令,只能执行插入、选择、更新。或者你的意思是删除行?表的设计非常糟糕,整个脚本的重写将在6个月左右完成。通常情况下,你可以在比赛结束后删除比赛,这将删除保存这些分数的表格。但我想保留这些数据,这样人们仍然可以引用这些数据,从而尝试将其归档。多个表不是会使数据库变慢吗?否则我会保持原样。这确实是更好的解决方案,但是看到脚本有点糟糕,6个月后就要重写了,我正在寻找临时解决方案。