$ _SESSION没有正确转发变量

时间:2013-04-12 00:14:02

标签: php sql session variables

用户查询数据库和某些表字段必须存储并在其他页面中使用。

第1页中的

,其中querytook位置和处方字段保存在变量$ _SESSION:

$query = " 
    SELECT 
        id, 
        full_name,
        address,
        email,
        telephone,
        prescription
    FROM patients 
    WHERE id 
    LIKE '%" . $patient_id . "%'";

    $PRESCRIPTION = 'prescription';


    $_SESSION['memory1'] = $PRESCRIPTION;
第2页中的

,其中变量需要重用,我使用它:<?php echo "Our patient's prescription is: ".$_SESSION['memory1'];?></b>

问题是在第一页中我使用了这样的变量:<?php echo htmlentities ($row[$PRESCRIPTION], ENT_QUOTES, 'UTF-8'); ?>并且它正确地输出了实际的字段结果。但是在第2页上,“字面上”显示的是字符处方而不是存储内容。它是第2页的谎言'处方'已经失去了意义。

我正在编辑问题以确认我在第2页中使用<?php echo "Our patient's prescription is: ".$_SESSION['memory1'];?>此代码。因此我指的是存储的变量。

关于回复我在第1页中过于文字化的帖子,那么当使用$ PRESCRIPTION变量时,为什么它在第一页中回应正确呢?如果文字存储。在第1页中,我也会得到第2页的概率,它返回了处方这个词。但是,在第1页中,我得到了我需要的实际表字段数据。在第2页我只是得到处方词。

最后一件事,我没有使用session_start,而是在每个doc的开头使用($ _SESSION ['user']),因为我使用了require(“common.php”);指定conn等。

希望这进一步澄清。

谢谢,等待你的意见

2 个答案:

答案 0 :(得分:1)

不确定,但我认为你想要的是:

第1页:

//Query goes here...

session_start();
$_SESSION['memory1'] = $row[$PRESCRIPTION];  //Store original value in session
echo htmlentities($row[$PRESCRIPTION], ENT_QUOTES, 'UTF-8');  //Display value

第2页:

session_start();
echo htmlentities($_SESSION['memory1'], ENT_QUOTES, 'UTF-8');  //Display value

重要的是你没有在会话中存储字符串的编码版本,只需在第二页上显示它时重新编码该值。

答案 1 :(得分:0)

始终确保您拥有

session_start();

位于每个文件的顶部,以确保您维护会话。