php脚本似乎忽略了if语句?

时间:2011-09-25 09:42:37

标签: php jquery

我让AJAX每5秒运行一次查询,检查用户是否已经请求与教练进行会话。如果有弹出对话框。脚本更改字段,以便它不会捕获相同的会话请求,但它似乎不关心字段是否为空,它只是一直运行通过PHP脚本。这是ajax和php代码。

setInterval(function() {
$.ajax({
  type: "GET",
  url: "includes/checksessionrequests.php",
  success: function(msg){
      if(msg == "yes") {
          $(\'$<div title="Request Recieved"></div>\').load(\'requestreceived.php\').dialog({modal: true, closeOnEscape: false, open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }, height: 300, width: 480, hide: {effect: "fade", duration: 1000}, show: {effect: "fade", duration: 1000}});
      }
    }
});

查询

<?php
session_start();
$user = $_SESSION['username'];
include("dbcon.php");
$result = mysql_query("SELECT * FROM sessionrequests 
    WHERE coach='$user' 
    AND sessionstatus='' 
    ORDER BY id") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$sessionstatus = $row['sessionstatus'];
$sessionid = $row['id'];

if($sessionstatus != "") { 
    die("no"); 
}
elseif($sessionstatus == "") 
{
$result = mysql_query("UPDATE sessionrequests 
    SET sessionstatus='received'
    WHERE id='$id'");
echo "yes";
}
mysql_close($con);
?>

2 个答案:

答案 0 :(得分:2)

您没有检查查询是否实际成功或者查询是否返回匹配项。如果发生这些情况之一,我相信$ sessionstatus将被设置为NULL,从而跳过你的if和elseif语句。我仍然不太熟悉PHP的弱类型以及NULL是否评估为“”。但是,值得一试。 : - )

我会尝试这样的事情:

$result = mysql_query("SELECT * FROM sessionrequests......");

if ($result) { // Query executed successfully
if (mysql_num_rows($result) > 0) { // Matches returned
$row = mysql_fetch_assoc($result);
$sessionstatus = $row['sessionstatus'];
$sessionid = $row['id'];

// Rest of your code

}
}

mysql_close($con);

答案 1 :(得分:0)

您的查询仅抓取数据WHERE coach='$user' AND sessionstatus=''$sessionstatus 总是 ""因此if($sessionstatus != "") { die("no"); } 从不被调用。

我仍然不明白这个问题。它只收集尚未收到的请求,并将第一个请求标记为received。这不是你想要它做的吗?究竟是什么问题?