【发布时间】:2014-08-27 06:34:42
【问题描述】:
我在选择语句上加载 html 时有一个数据库选择,我以降序选择最后五个,或者这里是代码
加载事件.php
<?php
function LoadEvent(){
global $dbh;
$stmt = $dbh->prepare("SELECT * FROM events ORDER by event_id DESC LIMIT 5") ;
//$stmt->bindValue(1,$eventwhat);
$stmt->execute();
while($selected_row = $stmt->fetch(PDO::FETCH_ASSOC)){
$_SESSION['searchresultwhat'] = $selected_row['event_what'];
$_SESSION['searchresultwhere'] = $selected_row['event_where'];
$_SESSION['searchresultwhen'] = $selected_row['event_when'];
$_SESSION['searchresultwho'] = $selected_row['event_who'];
$event = array($_SESSION['searchresultwhat'] => $selected_row['event_what'], $_SESSION['searchresultwhere'] =>$selected_row['event_where'], $_SESSION['searchresultwhen'] =>$selected_row['event_when'],$_SESSION['searchresultwho'] =>$selected_row['event_who']);
$_SESSION['arr'] = $event;
foreach ($_SESSION['arr'] as $_SESSION['searchresultwhat'] => $selected_row['event_what']){
echo $_SESSION['searchresultwhat'];
echo "<br/>\n";
}
}
}
?>
我在首页的html中写了
index.php
<?php include_once("include/loadevent.php");
LoadEvent();?>
在html中我的代码是
<?php
foreach ($_SESSION['arr'] as $_SESSION['searchresultwhat'] => $selected_row['event_what']){
echo $_SESSION['searchresultwhat'];
echo "<br/>\n";
}
?>
当我从 loadevent.php 执行回显时,我按降序获得最后五个,但在索引中,我得到的只是第一个事件,仅此而已,为什么这样任何人都可以看到我的错误在哪里?
【问题讨论】:
-
为什么要在会话中保存,而循环 $_SESSION['searchresultwhat'] 会覆盖其值。最后一个循环值仅存储在 $_SESSION['searchresultwhat'] 中。我认为这就是为什么只返回一个值。
-
$selected_row['event_what']在 HTML 代码中将只有您从数据库中获取的最后一个值,因为它在 while 语句之外使用。 -
你真的,真的在这里滥用 $_SESSION 变量。我有一个代码示例即将推出。