我的网页上有一个表单,用于根据用户输入的内容过滤数据库:
对数据库的 Ajax 调用实时返回查询满足的属性计数:
$query = "
SELECT
*
FROM
first_page_data
WHERE
((((acos(sin((".$lat."*pi()/180)) * sin((`geo_lat1`*pi()/180))+cos((".$lat."*pi()/180)) * cos((`geo_lat1`*pi()/180)) * cos(((".$lon."- `geo_lon1`)* pi()/180))))*180/pi())*60*1.1515) * 1.609344) < ".$range."
AND
value_min >= " . $valmin . "
AND
value_max <= " . $valmax . "
AND
bed_min >= " . $bedmin . "
AND
bed_max <= " . $bedmax;
$result = mysql_query($query, $first_data);
$number = mysql_num_rows($result);
echo $number;
这工作正常,一切都按我想要的方式工作。不过,我现在想对结果做“一些事情”(例如,单击按钮时将它们全部显示在表格中,在谷歌地图上显示它们等)。如何存储此查询的结果以便在其他网页上使用?我无法在另一个页面上重新查询数据库,因为结果取决于用户在此表单上的输入。
最佳答案
您可以将它们存储在临时 session 中。我实际上并不提倡这种方法,但不知道您的整个环境应该提供解决方案。
$result = mysql_query($query, $first_data);
while($row = mysql_fetch_assoc($result)) {
$_SESSION['store'][] = $row;
}
如果可以的话,我还强烈建议迁移到使用 mysqli,一旦完成此操作,您可以使用来清除它
unset($_SESSION['store']);
如果您的结果集很大,我不建议将其存储在临时 session 中。将其作为 json 数组存储到文件中。
while($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
file_put_contents($unique_var . '.txt', json_encode($rows));
您需要设置一个唯一值,以便稍后可以检索正确的文件。使用完成后删除文件:
unlink($unique_var . '.txt');
那么 future 的证明又如何呢? SESSION 存储更容易,但对于大量结果集和大量用户,这可能非常消耗资源,因此请尝试以下操作:
$result = mysql_query($query, $first_data);
while($row = mysql_fetch_assoc($result)) {
$rows = $row;
}
if(count($rows) < 51) {
$_SESSION['store'] = $rows;
} else {
file_put_contents($unique_var . '.txt', $rows);
}
您稍后可以像这样访问它:
if(!isset($_SESSION['store'])) {
$contents = file_get_contents($unique_var . 'txt');
unlink($unique_var . '.txt');
} else {
$contents = $_SESSION['store'];
unset($_SESSION['store']);
}
这样您将始终尽快清除 session 和临时文件。
关于php - 存储 SQL 结果以在其他网页上使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21971750/