PHP+MySQL中的全局变量和减少数据库访问
我是PHP+MySQL新手,并按照一个示例构建了一个web页面 基本上,我的首页读取数据库,检索页面上的所有项目和列表。每个项目都有一个指向显示其详细信息的新页面的链接 列表页:PHP+MySQL中的全局变量和减少数据库访问,php,mysql,database,Php,Mysql,Database,我是PHP+MySQL新手,并按照一个示例构建了一个web页面 基本上,我的首页读取数据库,检索页面上的所有项目和列表。每个项目都有一个指向显示其详细信息的新页面的链接 列表页: //itemlist.html.php <html><body> <ul> <?php foreach ($items as $item): ?> <li><a href="?C1=<?php echo($item['c1']); ?>
//itemlist.html.php
<html><body>
<ul>
<?php foreach ($items as $item): ?>
<li><a href="?C1=<?php echo($item['c1']); ?>">
<?php echo($item['c1']); ?></a></li>
<?php endforeach; ?>
</ul>
</body></html>
项目页面:
//itemeach.html.php
<html><body>
<h1><?php echo($c1) ?></h1>
<p><?php echo($c2) ?></p>
</body></html>
索引页:
<?php
if (isset($_GET['C1']))
{
/*
I want to reuse $iteminfos and get value for $c1 and $c2
*/
include 'itemeach.html.php';
exit();
}
$result = mysqli_query($link, 'SELECT * FROM TB');
while ($row = mysqli_fetch_array($result))
{
$items[] = array('c1' => $row['c1'], 'c2' => $row['c2']);
}
include 'itemlist.html.php';
?>
我删除了不必要的代码。自从它第一次加载index.php时,就检索到$infos。我想避免为了得到一个特定的项目而再次访问数据库,所以我考虑重用$infos。但当我触发'C1'时,它变为null。是否可以将$items保留为全局变量?还是有其他方法可以做到这一点
任何帮助都将不胜感激 您可以将检索到的行集存储在$\u会话超全局中。比如:
if (empty($_SESSION['items']) {
$result = mysqli_query($link, 'SELECT * FROM TB');
while ($row = mysqli_fetch_array($result)) {
$rowData[] = array('c1' => $row['c1'], 'c2' => $row['c2']);
}
$_SESSION['items'] = $rowData;
}
$items = $_SESSION['items'];
但是是的,Dagon说的是真的。只需移动查询,并在if-isset$\u-GET['C1']行上方循环,这将使$items可用于itemeach.html.php脚本。如果您可以发布itemeach.html.php的内容,我们可以进一步帮助您。您可以将检索到的行集存储在$\u SESSION superglobal中。类似:$\u会话['items]=$items;把它放在while循环之后。为每个页面做一个新的db请求是标准的方法。我现在考虑的不是打开一个新窗口,而是pop-div+css。我知道如何使用javascript进行静态pop div,但如何使用php+javascript,即pop div中的上下文是动态的?