php 和 mysql 将记录从一张表复制到另一张表
我想通过将记录从一张表移动到另一张表来归档学生.这是我尝试使用的代码:
I would like to archive a student by moving the record from one table to another. This is the code I am trying to use:
<?php
ini_set('memory_limit', '100M');
$sql="Select * from `register` where student_id=".$student_id;
$result=mysql_query($sql);
$row=mysql_fetch_array($result);
//Call the function to archive the table
//Function definition is given below
archive_record(archive,$row);
//Once you archive, delete the record from original table
$sql = "Delete from `register` where student_id=".$student_id;
mysql_query($sql);
function archive_record($archived_tablename,$row)
{
$sql = "insert into $archived_tablename values(";
$i=0;
while($i<(count($row)-1))
{
$sql.="'".$row[$i]."',";
}
$i=$i+1;
$sql.="'".$row[$i]."'";
$sql.=")";
mysql_query($sql);
return true;
}
我遇到的问题是我收到错误:
Problem I am having is that i am getting error:
致命错误:第 XX 行/archive-student.php 中的内存不足(分配 80478208)(试图分配 80216043 字节)
除了有一个名为存档的列并从 0 更改为 1 之外,还有其他方法可以做到这一点吗?这是因为我有 30-50 页选择表的记录.:)
Is there any different way to do this, except for have a column called archive and changing from 0 to 1? This is because I have 30-50 pages selecting the table's records. :)
推荐答案
INSERT INTO archive_table
SELECT * FROM original_table WHERE id = 1
就这么简单.
如果表格有不同的列号、其他布局等,您也必须指定列:
If tables have different column number, other layout etc., you will have to specify columns :too
INSERT INTO archive_table(field1, field2, field3)
SELECT field7, field8, field9 FROM original_table WHERE id = 1
相关文章