会话第一次不起作用(需要解释)

Session Doesnt work first time (want explanation )

你好,我看到很多问题,比如会话第一次不工作。但是看不到关于这个问题的任何好的解释,为什么第一次不工作以及会话期间发生的事情。我的也像其他人一样第一次不工作之后工作正常。

这是 php,正在会话中。

session_start();

$PersonName=$_GET['PersonName'];
$SurName=$_GET['SurName'];
$TestXML=$_GET['TestXML'];
$TestDate=$_GET['TestDate'];
$TestPkID='0000000000000000000000000000';
include('DBConnect.php');

    $proc = "{call p_set_Test(?,?,?,?,?,?,?,?,?)}";   
    $params = array(array($TestDate,SQLSRV_PARAM_IN),
                    array(0,SQLSRV_PARAM_IN),
                    array($PersonName,SQLSRV_PARAM_IN),
                    array($SurName,SQLSRV_PARAM_IN),
                    array($TestXML,SQLSRV_PARAM_IN),
                    array('',SQLSRV_PARAM_IN),
                    array(101,SQLSRV_PARAM_IN),
                    array(10,SQLSRV_PARAM_IN),
                    array($TestPkID, SQLSRV_PARAM_OUT)  
                   );       
    $result = sqlsrv_query( $conn, $proc, $params); 
    if( $result === false )  
    {  
         echo "Error in executing statement 3.\n";  
         die( print_r( sqlsrv_errors(), true));  
         $message2 = "aldaatai";
            echo "<script type='text/javascript'>alert('$message2 ' + $TestPkID);</script>";
    } 

    $_SESSION['idpktestsession'] = $_POST["idpktest"] = $TestPkID;
    $_SESSION['persontestname'] =$_POST['persontrollname'] = $PersonName;
    $_SESSION['persontestlastname'] =$_POST['persontrolllastname'] = $SurName;

这是从会话值中获取值

<?php include('DBConnect.php'); 
session_start();
    $diskuserid = $_SESSION['idpktestsession'];
    $diskusername = $_SESSION['persontestname'];
    $diskuserlastname = $_SESSION['persontestlastname'];
    $diskuserlastname = mb_substr($diskuserlastname, 0, 1);


    ?>
<?php   

                $proc = "{call p_rpt_Pattern(?,?)}";   
                $params = array($diskuserid,'M');  
                $procarr = array();
                $result = sqlsrv_query( $conn, $proc, $params);             
                while ($row = sqlsrv_fetch_array($result))
                {?>
                    <tr>
                        <td><?php echo $row['PatternCode']?></td>
                        <td><i class="fa fa-chevron-right rightarrow" > </i></td>
                        <td><?php echo $row['PatternDesc']?></td>
                    </tr>
            <?php
                }
            ?>  

这个语句写错了:

$_SESSION['idpktestsession'] = $_POST['idpktest'] = $TestPkID;

如果你想赋值你可以像这样重写上面的语句

$_SESSION['idpktestsession'] = $_POST['idpktest'];

如果你想连接两个值,你可以像这样重写

$_SESSION['idpktestsession'] = $_POST['idpktest'] . ','. $TestPkID;

只要这个问题没有得到回答,我就发现了为什么它第一次不起作用。 每次它将会话发送到另一个 php 时,它会在页面加载后发送值,因此如果您遇到此错误,只需在页面加载前分配值或将中间加载 php 代替直接显示。