我目前正在使用PHP在本地创建一个系统,供用户将数据插入一个页面中的14个表中,然后一天结束时,该表中的所有数据都应该被自动移动到数据库中的一个新表中,该表名为dashboard(将存储每日数据),但最近我使用了手动点击按钮来采取行动,同时上述14个表状态中的所有数据都将被自动删除。很容易让用户在第二天插入新数据,因为今天的数据已经移动到另一个表,而当前表的数据也是空的。我已经在所有网站上搜索了这件事,但没有得到任何解决方案。希望你们能帮我解决这个问题。
我使用了INSERT INTO,但不起作用。我应该在哪里使用FROM标记?因为有8个表需要传输,例如:sr1、sr2、sr3等等
我的代码如下:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO sr1_full (date, total_pending, appt_today, percent_appt_today, percent_complete, partial_complete, full_complete, return_technical, return_customer, return_cancel, cancel, reappt, focus, total_tepi, total_bawah) SELECT date, total_pending, appt_today, percent_appt_today, percent_complete, partial_complete, full_complete, return_technical, return_customer, return_cancel, cancel, reappt, focus, total_tepi, total_bawah FROM sr1 TRUNCATE TABLE sr1",
GetSQLValueString($_POST['date'], "date"),
GetSQLValueString($_POST['total_pending'], "int"),
GetSQLValueString($_POST['appt_today'], "int"),
GetSQLValueString($_POST['percent_appt_today'], "int"),
GetSQLValueString($_POST['percent_complete'], "int"),
GetSQLValueString($_POST['partial_complete'], "int"),
GetSQLValueString($_POST['full_complete'], "int"),
GetSQLValueString($_POST['return_technical'], "int"),
GetSQLValueString($_POST['return_customer'], "int"),
GetSQLValueString($_POST['return_cancel'], "int"),
GetSQLValueString($_POST['cancel'], "int"),
GetSQLValueString($_POST['reappt'], "int"),
GetSQLValueString($_POST['focus'], "int"),
GetSQLValueString($_POST['total_tepi'], "int"),
GetSQLValueString($_POST['total_bawah'], "int"));
mysql_select_db($database_pods, $pods);
$Result1 = mysql_query($insertSQL, $pods) or die(mysql_error());
$insertGoTo = "main.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_pods, $pods);
$query_sr1 = "SELECT * FROM sr1";
$sr1 = mysql_query($query_sr1, $pods) or die(mysql_error());
$row_sr1 = mysql_fetch_assoc($sr1);
$totalRows_sr1 = mysql_num_rows($sr1);
mysql_select_db($database_pods, $pods);
$query_sr2 = "SELECT * FROM sr2";
$sr2 = mysql_query($query_sr2, $pods) or die(mysql_error());
$row_sr2 = mysql_fetch_assoc($sr2);
$totalRows_sr2 = mysql_num_rows($sr2);
mysql_select_db($database_pods, $pods);
$query_sr3 = "SELECT * FROM sr3";
$sr3 = mysql_query($query_sr3, $pods) or die(mysql_error());
$row_sr3 = mysql_fetch_assoc($sr3);
$totalRows_sr3 = mysql_num_rows($sr3);
mysql_select_db($database_pods, $pods);
$query_sr4 = "SELECT * FROM sr4";
$sr4 = mysql_query($query_sr4, $pods) or die(mysql_error());
$row_sr4 = mysql_fetch_assoc($sr4);
$totalRows_sr4 = mysql_num_rows($sr4);
mysql_select_db($database_pods, $pods);
$query_sr5 = "SELECT * FROM sr5";
$sr5 = mysql_query($query_sr5, $pods) or die(mysql_error());
$row_sr5 = mysql_fetch_assoc($sr5);
$totalRows_sr5 = mysql_num_rows($sr5);
mysql_select_db($database_pods, $pods);
$query_stx = "SELECT * FROM stx";
$stx = mysql_query($query_stx, $pods) or die(mysql_error());
$row_stx = mysql_fetch_assoc($stx);
$totalRows_stx = mysql_num_rows($stx);
mysql_select_db($database_pods, $pods);
$query_kl = "SELECT * FROM kl";
$kl = mysql_query($query_kl, $pods) or die(mysql_error());
$row_kl = mysql_fetch_assoc($kl);
$totalRows_kl = mysql_num_rows($kl);
mysql_select_db($database_pods, $pods);
$query_msc = "SELECT * FROM msc";
$msc = mysql_query($query_msc, $pods) or die(mysql_error());
$row_msc = mysql_fetch_assoc($msc);
$totalRows_msc = mysql_num_rows($msc);
mysql_select_db($database_pods, $pods);
$query_total = "SELECT * FROM total_bawah";
$total = mysql_query($query_total, $pods) or die(mysql_error());
$row_total = mysql_fetch_assoc($total);
$totalRows_total = mysql_num_rows($total);
使用此SQL来复制数据。
insert into `CopyTable` (`colum1`,`colum2`) select `colum1`,`colum2` from `Sourcetable`
空表
TRUNCATE TABLE `Sourcetable`
示例:
$insertSQL = "INSERT INTO sr1_full (`date`, `total_pending`, `appt_today`, `percent_appt_today`, `percent_complete`, `partial_complete`, `full_complete`, `return_technical`, `return_customer`, `return_cancel`, `cancel`, `reappt`, `focus`, `total_tepi`, `total_bawah`) SELECT `date`, `total_pending`, `appt_today`, `percent_appt_today`, `percent_complete`, `partial_complete`, `full_complete`, `return_technical`, `return_customer`, `return_cancel`, `cancel`, `reappt`, `focus`, `total_tepi`, `total_bawah` FROM `sr1`";
mysql_query($insertSQL); // data copied.
$removeSQL = "TRUNCATE TABLE sr1";
mysql_query($removeSQL); // deleted all data from sr1
//data moved
您很难找到有关如何做到这一点的信息的原因是这不是正确的方法。
您不应该复制表的结构来存储"今天"的数据和前几天的数据。应该将所有项目存储在一个仪表板表中,并根据日期列进行筛选,以确定哪些项目被视为今天的项目。您试图采取的将行从当前表移动到存档表的方法是完全错误的。数据库不是这样工作的。
尽管如此,您可以使用select into table
将所有数据从today_dashboard
移动到all_dashboard
,然后使用delete from today_dashboard
将其清除不要这样做。重新思考您的体系结构,将两者存储在一张表中。
$current_date = date("m.d.y");
$query = "INSERT INTO table_name (date,column1, column2, column3,...)
VALUES ($current_date,value1, value2, value3,...)";
$result=mysql_query($query);
- 通过这种方式,您必须将所有日期插入到具有当前日期的表格中
将记录保存到数据库后,您必须检查当前日期是否与任何记录匹配。如果发现任何记录,您必须使用delete查询删除此记录。通过这种方式,您可以从表中删除所有现有记录
希望这对你有用。。。