【问题标题】:Why do I get 'Undefined offset: 0'?为什么我会得到“未定义的偏移量:0”?
【发布时间】:2011-09-18 09:35:23
【问题描述】:

我正在开发一个网站,它看起来不错。 然后我打开调试看看我是否有任何错误,我得到这个消息:

Notice: Undefined offset: 0 in I:\path\to\file\MyFile.class.php on line 105

在那一行你会发现下面的代码:

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result[0]; // line 105

如果我执行print_r(result),我会得到以下结果:

Array (
    [0] => Array (
        [id] => 3721
        [parentID] =>
    )
)
Array (
) 

如您所见,结果包含两个数组。第一个有数据,第二个没有数据。我从未见过print_r 输出两个这样的数组。我猜这是第二个导致我出现问题的原因。

谁能告诉我为什么第二个数组会潜入?

VAR 转储

array
  0 => 
    array
      'id' => string '3721' (length=4)
      'parentID' => null
array
  empty

【问题讨论】:

  • "如您所见,结果包含两个数组。" - - 错误的。正如我们所看到的 - 有两个不同的数组 print_r'ed
  • 能否请您发布来自var_dump($result)的结果?
  • 它实际上不能“潜入”,肯定有问题。也许您在代码中两次调用print_rvar_dump($result); 的输出是什么?
  • 您应该始终打开调试,然后开发 - 按此顺序。
  • 在调用var_dump() 之后确保你exit 否则你可能会得到两个或更多的转储。

标签: php mysql pdo


【解决方案1】:

您获取与查询匹配的所有记录。如果有 no 记录,它将返回一个空数组。显然空数组中没有0元素。

【讨论】:

  • 如您所见,返回记录。第一个数组包含另一个包含数据的数组。给你+1,因为这不应该被否决。
  • 否,在第二次调用时不返回任何记录。检查回溯以查看第二次调用它的位置和方式。
猜你喜欢
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2014-06-25
  • 2013-09-23
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多