有一个脚本1.php
session_start();
$sql_1 = "SELECT ID,text,dt FROM Notes WHERE username='test' ORDER BY ID DESC ";
$result_1 = $conn->query($sql_1);
while($fetch = mysqli_fetch_array($result_1)){
... + A link on the view.html
$_SESSION["ID"] = $fetch['ID'];
...
和脚本2.php
session_start();
$ID = ($_SESSION["ID"]);
$sql_1 = "SELECT text FROM Notes WHERE username='test' AND ID = '$ID'";
$result_1 = $conn->query($sql_1);
while($fetch = mysqli_fetch_array($result_1)){
echo '<p>'.$fetch['text'].'</p>';
}
在pageview.html上,我使用Ajax"调用"脚本2.php。
问题是,实际上只存储了第一个会话ID。例如,如果查询得到ID的列表,则SESSION将仅存储ID编号为"1",但不是2等。如何获得第二个或第三个(即用户从具有所需ID的链接列表中选择)。例如,有一个具有不同ID的链接列表。用户希望打开第二个链接。SESSION需要"记住"这个ID,并在view.html上显示第二个链接的文本。
提前谢谢。
您需要使会话变量成为一个数组,然后将行附加到每个数组片段
session_start();
$ID = ($_SESSION["ID"]);
$sql_1 = "SELECT text FROM Notes WHERE username='test' AND ID = '$ID'";
$result_1 = $conn->query($sql_1);
$_SESSION['data'] = array();
$iCount = 0;
while($fetch = mysqli_fetch_array($result_1)){
echo '<p>'.$fetch['text'].'</p>';
$_SESSION['data'][$iCount] = $fetch['text'];
$iCount++;
}
当然你能做到。。。。
session_start();
$ID = ($_SESSION["ID"]);
$sql_1 = "SELECT text FROM Notes WHERE username='test' AND ID = '$ID'";
$result_1 = $conn->query($sql_1);
$_SESSION['data'] = array();
$iCount = 0;
while($fetch = mysqli_fetch_array($result_1)){
echo '<p>'.$fetch['text'].'</p>';
$_SESSION['data'][$iCount] = $fetch;
$iCount++;
}
foreach ($_SESSION['data'] as $oSessData) {
echo "Text: ", $oSessData['text'], "<br />";
}
如评论中所述:通过(user3036342)
// CALL THIS ONLY ONCE, SAY WHEN THE USER LOGS ON... Calling it twice will clear it.
$_SESSION['data'] = array();
session_start();
$ID = ($_SESSION["ID"]);
$sql_1 = "SELECT text FROM Notes WHERE username='test' AND ID = '$ID'";
$result_1 = $conn->query($sql_1);
while($fetch = mysqli_fetch_array($result_1)){
echo '<p>'.$fetch['text'].'</p>';
$_SESSION['data'][] = $fetch['text']; // this will append to the array
}
foreach ($_SESSION['data'] as $oSessData) {
echo "Text: ", $oSessData, "<br />";
}
编辑
最后一个例子将为会话创建一个数组(请注意,只调用该部分一次),然后while循环将在任何时候找到一行或多行时附加到该数组。
// CALL THIS ONLY ONCE, SAY WHEN THE USER LOGS ON... Calling it twice will clear it.
session_start();
$_SESSION['data'] = array();
请确保以上代码在不同的时间运行。每次运行此代码时,它都会将数据变量设置为空数组。因此,当您第一次登录或访问该页面时,请运行它。
下面的代码可以根据您的需要随时运行,每次都会附加值
// Store them by id
session_start();
$ID = ($_SESSION["ID"]);
$sql_1 = "SELECT text FROM Notes WHERE username='test' AND ID = '$ID'";
$result_1 = $conn->query($sql_1);
while($fetch = mysqli_fetch_array($result_1)){
echo '<p>'.$fetch['text'].'</p>';
$_SESSION['data'][$ID] = $fetch['text']; // this will assign a by a index/key
}
foreach ($_SESSION['data'] as $oSessData) {
echo "Text: ", $oSessData, "<br />";
}
// or access them directly if they are known...
echo "Text: ", $oSessData[77], "<br />"; // if user 77 is in the array
另一个想法
根据会话变量的外观,您在一个会话中开立了一个帐户。。正在获取文本值。。。如果要进入另一个会话或用户会话,则需要在重新生成新会话时将会话数组转移到php数组。
否则,每次终止会话时,都会丢失其中的所有数据。我觉得问题出在粘贴代码之前的一两步。。您是否登录到某种形式的多个会话?