1


我有一个网页,我在其中上传了一个 csv 文件,然后使用 php 将其导入到mysql数据库中。
我有一个 mysql 查询,"SELECT * FROM wifi"然后计算数据库中的行数。然后它应该运行 csv 的导入并进行相同的查询并再次计算行数,向我显示“之前和之后”的数字。这我开始工作了,有点。

问题是,计算“之前”数字的第一个查询位于页面顶部,它显示的数字很好,当我点击提交按钮时,它将我的 csv 发送到 php 中,将其插入数据库并重定向到"pagehere?success=1"哪里它应该告诉我“之后”的数字。但是随着页面重新加载/重定向,带有“之前”编号的第一个查询将重新运行并显示“之后”编号。

所以我有一个“之前”数字,导入 csv 和页面重新加载,然后我有两个“之后”数字。

如何在页面重定向期间保留“之前”编号?
代码是这样的(我还在学习,可能有问题)

(THIS CODE IS IN WEBPAGE)
//Count before import
$before = mysql_query("SELECT * FROM wifi");
$num_rows_before = mysql_num_rows($before);

(THIS CODE IS WHERE THE FORM UPLOAD FILE TO AFTER SUBMIT-BUTTON)
<?php 

if ($_FILES[csv][size] > 0) {

//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");

//loop through the csv file and insert into database
do {
    if ($data[0]) {
        mysql_query("INSERT IGNORE INTO wifi (bssid, channel, privacy, ciper, auth, power, essid, latitude, longitude, first_seen, last_seen) VALUES
            (
                '".addslashes($data[0])."',
                '".addslashes($data[1])."',
                '".addslashes($data[2])."',
                '".addslashes($data[3])."',
                '".addslashes($data[4])."',
                '".addslashes($data[5])."',
                '".addslashes($data[6])."',
                '".addslashes($data[7])."',
                '".addslashes($data[8])."',
                '".addslashes($data[9])."',
                '".addslashes($data[10])."' 
            )
        ");
    }
} while ($data = fgetcsv($handle,1000,","));

//redirect
header('Location: index.php/upload?success=1'); die;

}

//Count after import
$after = mysql_query("SELECT * FROM wifi");
$num_rows_after = mysql_num_rows($after);


//echo stats
echo "Number of rows before - ";
echo "$num_rows_before";
<br>
echo "Number of rows after - ";
echo "$num_rows_after";

//generic success notice
if (!empty($_GET[success])) { echo "<br><b>Result: Your file is imported!</b><br>"; } 

//Close connection to databse
mysql_close($connect) ; 

?>
4

2 回答 2

5

将“之前”数字作为参数传递给第二个网页。因此,将代码的最后一行更改为

header('Location: index.php/upload?success=1&before=' . $num_rows_before); die;
于 2013-06-18T08:36:23.827 回答
0

您有几个选项可以在请求之间保留数据

  1. session按照 Orangepill 的建议使用。对于 PHP,$_SESSION如果您使用原始 PHP ,则可以将会话存储在
  2. 使用 URL 查询参数。处理数据后,您可以设置 URL 的参数以保存最后一个值。yourdomain.com?previous=somepreviousdata
  3. 使用 cookie。您还可以将以前的数据存储在 cookie 中。如果您在没有任何框架的情况下使用原始 PHP,则可以使用setcookie("previous", $data);
于 2013-06-18T08:46:07.563 回答