如何在PHP页面之间的循环中传递SESSION变量


How to pass a SESSION variable within a loop between PHP pages

我试图将变量$candid$clientid从active.php传递到editor.php。这是我目前为active。php编写的代码:

$active_tsquery = db_select("SELECT * FROM timesheets WHERE status='"cand'" OR status='"client'" ORDER BY weekending ASC"); 
    echo "<table width='"90%'">
        <tr>
        <td width='"20%'">Client Company</td>
        <td width='"20%'">Candidate</td>
        <td width='"20%'">Week Ending</td>
        <td width='"20%'">Action</td>
        </tr>";
    foreach($active_tsquery as $key => $value) {
        $clientid = $value["clientid"];
        $_SESSION['clientid'] = $clientid;
        $weekend = $value["weekending"];
        $clientresult = db_select("SELECT * FROM timesheetlogin WHERE id='"$clientid'"");
        $candid = $value["candid"];
        $_SESSION['candid'] = $candid;
        $candresult = db_select("SELECT * FROM timesheetlogin WHERE id='"$candid'"");
        $ts_id = $value["ts_id"];
        $_SESSION['tsid'] = $ts_id;
        foreach ($clientresult as $key => $value) {
            $company = $value["company"];
        }
        foreach ($candresult as $key => $value) {
            $candidate = $value["name"];
        }
        echo "<tr><td class='"main-text'">$company</td><td class='"main-text'">
$candidate</td><td class='"main-text'">$weekend</td><td class='"main-text'">
<a href='"editor.php?id=$ts_id'" class='"main-link'">Edit</a></td><td class='"main-link'">
<a href='"deleteconfirm.php?id=$ts_id'" class='"main-link'">Delete</a></td></tr>";
    } 

Active.php正在工作,因为<a href='"editor.php?id=$ts_id'" class='"main-link'">Edit</a>正在给出正确的url。

这是我在editor.php中的代码:
$candid = $_SESSION['candid'];
$clientid = $_SESSION['clientid'];
$candresult = db_select("SELECT * FROM timesheetlogin WHERE id='"$candid'"");
$clientresult = db_select("SELECT * FROM timesheetlogin WHERE id='"$clientid'"");
$tsresult = db_select("SELECT * FROM timesheets WHERE candid='"$candid'"");
var_dump($tsresult);

var_dump($tsresult);是一个1的数组,每次返回最后一个时间表。我假设是因为$candid是错误的。foreach循环在active.php已经完成,$candid正在从数组的最后一项返回?

我使用session_start();在每个文件的顶部BTW。

在foreach循环的每次迭代中,覆盖 $_SESSION['candid']的当前值。这就是为什么只有最后一个candid出现在editor.php中。

PHP在会话变量中支持数组,所以如果在foreach循环之前初始化数组:

$_SESSION['candid'] = array();

(或者,新的样式,从PHP 5.4起工作)

$_SESSION['candid'] = [];

并将candid添加到循环中的数组中:

$_SESSION['candid'][] = $candid;

可以在editor.php中遍历数组

您可以通过像这样将[]添加到$_SESSION['clientid']来实现您想要的:$_SESSION['clientid'][]本质上意味着"将此追加到数组"。