对此的解释可能看起来有点冗长和复杂,但请多多包涵。本质上,我想要做的是从我的数据库中的另一个 mysql 表(B)填充一个 mysql 表(A),但为了这样做,我需要复制表(A)中的值,以便有足够的条目来容纳对于表 B 中的值。
现在举一个更具体的例子
表格的外观
course_details 表
course_details_id | course_id | 年号 | 教师编号 +--------+-----------+------------+------ ------+ 1 1 待设置 36 2 2 待设置 54 3 3 待设置 78 4 4 待设置 23
年表
year_semester_id | 年份 | 学期 +-----------------+-----+----------+ 1 2012 1 2 2012 2 3 2012 3 4 2012 4 5 2013 1 6 2013 2 7 2013 3 8 2013 4
我希望桌子看起来如何
course_details_id | course_id | 年号 | 教师编号 -------------------+------------+---------+-------- ----+ 1 1 1 36 2 1 2 36 3 1 3 36 4 1 4 36 5 1 5 36 6 1 6 58 7 1 7 36 8 1 8 47 9 2 1 54 10 2 2 54 11 2 3 54 12 2 4 67 13 2 5 67 14 2 6 54 15 2 7 54 16 2 8 54
代码的外观
<?php
require_once('open_db.php');
get_dbhandle();
$query_year = "SELECT * FROM year";
$result_year = mysql_query($query_year) or die(mysql_error());
$num_year_rows = mysql_num_rows($result_year);
$num_year_rows = ($num_year_rows - 1);
$query_yearid = "SELECT year_semester_id FROM year";
$result_yearid = mysql_query($query_yearid) or die(mysql_error());
$result_ccheck = mysql_query("SELECT course_id FROM courses");
while($row = mysql_fetch_array($result_ccheck))
{
$course_id = $row['course_id'];
for($i = $num_year_rows; $i >= 0; $i--)
{
$query_cdetails = "INSERT INTO course_details (course_id) VALUES ('$course_id')";
$result_cdetails = mysql_query($query_cdetails);
while($row = mysql_fetch_array($result_yearid))
{
$year_semester_id = $row['year_semester_id'];
$query = "INSERT INTO course_details(year_semester_id) SELECT year_semester_id FROM year";
$result = mysql_query($query);
}
}
}
?>
它的作用与我想要它做的事情:按照当前的设置,它正确地在 course_details 表中创建每个 course_id 的副本,以匹配存在于 years 表中的 year_semester_id 的数量,这是完美的。问题在于在 course_details 表的每个对应表槽中插入 year_semester_id。
也就是说,保证当 course_id =1 , year_semester_id=1, course_id=1, year_semester_id =2,....course_id=1, year_semester_id=8, course_id=2, year_semester_id=1, course_id=2, year_semester_id= 2......course_id=2,yearsemester_id=8,course_id=3,year_semester_id=1 等等......这就是问题所在。
回顾一下代码的工作原理,它计算 years 表中 year_semester_id 的数量,然后将该数字减去 1,即 course_id 当前在 course_details 表中的次数,并将其复制为该数字。这个总数(重复)加上原始 course_id 应该是 year_semester_ids 的总量。我现在想为存在的每个 course_id 插入每个 year_semester_id 并循环遍历,直到每个 course_id 都被计算在内。谢谢