mysql_fetch_array没有创建正确的元素?

时间:2014-03-17 17:02:54

标签: php mysql arrays

我收到以下错误消息:

  

注意:未定义的索引:第42行的timein in time.php注意:未定义的索引:第45行的time.php超时

这是我的代码:

if (isset($_POST['submit'])) {
    $name = $_POST['name'];

$querytimeout = mysql_query("
    SELECT timein 
    FROM studentInfo
    WHERE name = '$name' 
    ORDER BY time DESC
    LIMIT 1,1
    ")
    or die("Error querying database ".mysql_error());
    $querytimein = mysql_query("
    SELECT timeout
    FROM studentInfo
    WHERE name = '$name' 
    ORDER BY time DESC
    LIMIT 1
    ")
    or die("Error querying database ".mysql_error());
while($minutestimein = mysql_fetch_array($querytimein)){
    $ltimein = $minutestimein['timein'];
    }
        while($minutestimeout = mysql_fetch_array($querytimeout)){
    $ltimeout = $minutestimeout['timeout'];
  }
  $timegone = $ltimein - $ltimeout; 
  echo $timegone;
  }

问题是mysql_fetch_array()没有使timeintimeout成为数组$minutestimein的元素。

2 个答案:

答案 0 :(得分:0)

如果您将查询与他们正在查找的字段进行比较,那么这些字段就不匹配。

在第一个查询中,您只选择timeout,但尝试引用$minutestimein['timein']。您在第二个查询中执行相反的操作。

答案 1 :(得分:0)

您的两个查询是多余的 - 它们从SAME记录中获取两个不同的字段。为什么不运行一个查询?

SELECT timein, timeout
FROM studentInfo
WHERE name = '$name'
ORDER BY time DESC
LIMIT 1

然后

$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
$diff = $row['timeout'] - $row['timeout'];

另外,使用while()循环获取结果时,确实存在 NO 点。您已经将查询限制为仅返回一行,从而使整个循环基础结构变得无用。