1

在我的主页上,当有人登录时,我让 jQuery 使用 AJAX 与 PHP 文件“对话”,当他们注销时也是如此。但是,当他们退出时,应该使用他们离开的时间来更新数据库索引。如果他们的姓氏的数据库条目不存在(意味着他们没有登录),则应该返回错误。相反,PHP 文件说它正在更新一个不存在的数据库索引。我正在使用 IF 语句来实现这一点。由于某种原因,它认为该索引确实存在。我检查了它正在写入的数据库,并且它应该更新的索引不存在。

这是我的代码:

if ($Type == 1)
{
$mysqli = new mysqli("localhost","----","----", "----");
if (!$mysqli)
    $Type = 3;


$Select = $mysqli->query("SELECT Time_Out FROM " . $Date . " WHERE Last_Name = '" . $LName . "'");
$Row = $Select->fetch_assoc();
$Row2 = $Row['Time_Out'];
if ($Row2 !== "-1") $Type = 4;


if ($Type == 1)
    {if ($mysqli->query("UPDATE " . $Date . " SET Time_Out='" . $Time . "' WHERE Last_Name='" . $LName . "'"))
        {}
     else
        {$Type = 5;}
    }

$Select = $mysqli->query("SELECT Time_In FROM " . $Date . " WHERE Last_Name='" . $LName . "'");
$Row = $Select->fetch_assoc();
$Row2 = $Row['Time_In'];
$Time2 = explode(":",$Row2);
$Hour2 =  $Hour - $Time2[0];

if ($mysqli->query("SELECT Hours FROM Names WHERE Last_Name='" . $LName . "'"))
    {$Select = $mysqli->query("SELECT Hours FROM Names WHERE Last_Name='" . $LName . "'");
     $Row = $Select->fetch_assoc();
     $Row3 = $Row['Hours'];
     $Auto += 1;}

$Time3 = 60-$Time2[1];
if ($Hour != 21) $Time4 = $Min;
$Time5 = $Time3+$Time4;
if ($Time2[0]+1 != $Hour)
    {$Time5 = $Time5+60;}
$Total = $Time5+intval($Row3);

if ($Type == 1)
{
if ($mysqli->query("UPDATE Names SET Hours = '" . $Total . "' WHERE Last_Name = '" . $LName . "'"))
    {$Auto += 1;}
else
    {$mysqli->query("INSERT INTO Names (Last_Name, First_Name, Hours) VALUES ('" . $LName . "', '" . $FName . "', '" . $Total . "')");}
}


$mysqli->close();
}

if ($Type == 1) echo "Thank you " . $FName . " " . $LName . " for signing out! See you next time!";
if ($Type == 2) echo "The entered Student ID# is invalid. Please try again!";
if ($Type == 3) echo "An unexpected error has occured. Please try again!";
if ($Type == 4) echo "You have already signed out today!" . $Auto;
if ($Type == 5) echo "You didn't sign in today.";
4

1 回答 1

0

UPDATE sql 语句将返回 true,即使它没有找到任何匹配项(它仍然正确运行,它只是更新 0 行)。

改变这个:

if ($Type == 1)
{if ($mysqli->query("UPDATE " . $Date . " SET Time_Out='" . $Time . "' WHERE Last_Name='" . $LName . "'"))
    {}
else
    {$Type = 5;}
}

对此:

if ($Type == 1) {
    if ($mysqli->query("SELECT * FROM " . $Date . " WHERE Last_Name='" . $LName . "'")->num_rows > 0)
        $mysqli->query("UPDATE " . $Date . " SET Time_Out='" . $Time . "' WHERE Last_Name='" . $LName . "'");
    else
        $Type = 5;
}

您运行 select 查询首先确定记录是否存在(如果结果的 num_rows 属性 > 0)并基于此更新记录或将返回值设置为 5。

于 2013-02-08T01:14:07.897 回答