PHP+;MySQL+;Cookies,为什么不能正确加载?

PHP+;MySQL+;Cookies,为什么不能正确加载?,php,mysql,cookies,postback,Php,Mysql,Cookies,Postback,我有一个PHP页面,在代码的不同部分有两条MySQL语句。我使用生成的结果集设置cookie值,然后稍后调用它。然而,当我调用cookie数据时,它在第二次刷新之前不会更新cookie值的显示。为了更好地理解,以下是代码的3部分: <?php include 'functions.php'; if($_SERVER['REQUEST_METHOD'] == 'POST') { $SqlStatement = "SELECT Deceased.PK_Deceased, Decease

我有一个PHP页面,在代码的不同部分有两条MySQL语句。我使用生成的结果集设置cookie值,然后稍后调用它。然而,当我调用cookie数据时,它在第二次刷新之前不会更新cookie值的显示。为了更好地理解,以下是代码的3部分:

<?php
include 'functions.php';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $SqlStatement = "SELECT Deceased.PK_Deceased, Deceased.Date_Death, Personal_Info.First_Name, Personal_Info.Last_Name FROM Deceased INNER JOIN Personal_Info ON Personal_Info.PK_Personal_Info = Deceased.FK_Personal_Info WHERE Deceased.FK_Personal_Info = '".$_POST['cboDeceased']."'";

    $result = ExecuteSql($SqlStatement);
    if(mysqli_num_rows($result) == 1)
    {
        $row = mysqli_fetch_array($result);
        setcookie('deceasedID', $row['PK_Deceased'], time()+360000, '/');
        setcookie('deceasedName', ($row['First_Name']." ".$row['Last_Name']), time()+360000, '/');
        setcookie('deceasedDoD', $row['Date_Death'], time()+360000, '/');
    }
}
?>
下面是ExecuteSQL函数的代码。我知道这不是问题所在


我认为问题出现在上面的第一个代码块中,但我不确定。我已经尝试了我能做的一切,现在已经没有主意了。任何帮助都将不胜感激。

除了DaveRandom上面提到的SQL注入之外,请查看有关setcookie工作原理的php手册:

它特别提到信息被注入到标题中,因此在下一页加载之前不可用。你可能想做一些类似的事情

if(isset($_COOKIE['deceasedID']))
{
    $deceasedID = $_COOKIE['deceasedID'];
}
else
{
    setcookie('deceasedID', $row['PK_Deceased'], time()+360000, '/');
    $deceasedId = $row['PK_Deceased'];
}

这段代码中有一个巨大的SQL注入漏洞。请了解SQL注入、转义用户输入和准备好的语句。还请注意,
$\u cookie
数组中的cookie数据在页面刷新后才可用,因为这是cookie的性质。这可能更适合你的需要。我不担心注射,我只想在第一次回发时重新加载cookies。我曾经让它工作过一次,然后改变或添加了一些东西,现在它不再以这种方式工作了。如果您能为实现此目的提供任何帮助,我们将不胜感激。您也不需要为每个查询创建新连接。只需要引导一次。非常感谢!!它工作得很好。我想我做的一定是提取行数据,然后将其更改为使用cookies。再次感谢。没问题,如果你完成了你要找的问题,你可能会考虑把问题标上答案。除了我现在回去了,它是不起作用的。我甚至已经恢复并再次尝试,但它仍然不起作用,因此我不知道我做了什么来破坏它,但它不再起作用。不幸的是,“它不起作用”没有足够的信息来帮助您解决问题。为什么不用您已经更改的内容和您的代码现在的外观来编辑上面的内容呢?
<form action="<?php $_SERVER['PHP_SELF'];?>" method="post">
<table align="center" width="500" border="0.5">
<tr>
<td width="176" align="right" style="font-weight:bold;">Please select deceased:</td>
<td width="214">
  <select name="cboDeceased" id="cboDeceased">
    <option>Select...</option>
    <?php
    $SqlStatement = "SELECT Deceased.PK_Deceased , Personal_Info.First_Name, Personal_Info.Last_Name FROM Deceased INNER JOIN Personal_Info ON Personal_Info.PK_Personal_Info = Deceased.FK_Personal_Info";

    $res = ExecuteSQL($SqlStatement);

    while($row = mysqli_fetch_array($res))
    {
        echo "<option value='".$row['PK_Deceased']."'>".$row['First_Name']." ".$row['Last_Name']."</option>";
    }
?>
function ExecuteSQL($SQL)
{
$con = mysqli_connect("localhost", "root", "", "exec_support_db");
$res = mysqli_query($con, $SQL);
mysqli_close($con);
return $res;
}
if(isset($_COOKIE['deceasedID']))
{
    $deceasedID = $_COOKIE['deceasedID'];
}
else
{
    setcookie('deceasedID', $row['PK_Deceased'], time()+360000, '/');
    $deceasedId = $row['PK_Deceased'];
}