【问题标题】:php,pdo,foreachphp,pdo,foreach
【发布时间】:2012-03-17 17:10:22
【问题描述】:

代码:

public static function selectlogin($sq)
{       
    $db_handler = self::handler();

    $res = $db_handler->query($sq);


    foreach ($res as $row)
    {
        $_SESSION['admin_id'] = $row['id'];
    }

    return $_SESSION['admin_id'];
}

错误信息

Warning: Invalid argument supplied for foreach()

谁能解决这个问题?

【问题讨论】:

  • 在拨打query 之后尝试print_r($res)。查询可能失败,因此您无法获得结果。
  • @mahi 您可以将 handler::query 源添加到您的问题中吗?

标签: foreach pdo


【解决方案1】:

我*不知道您正在使用的 ,但是在 foreach 之前,您必须使用与 mysql_fetch_array() 相同的等价物将 SQL Result Resource 转换为一个数组你可以继续工作。错误的原因是因为 $res 包含一个结果资源,而不是结果本身。

【讨论】:

    【解决方案2】:

    是的! ...你的 $res 是一个虚假的价值。 NULL 或 FALSE。

    if ($res)
    {
      for ($res as $row)
      {
        $_SESSION['admin_id'] = $row['id'];
      }
      return $_SESSION['admin_id'];
    }
    

    【讨论】:

      【解决方案3】:

      你可以试试这个

      if (is_array($res))
      {
           foreach ($res as $row)
          {
           // store
          }
      }
      

      我们检查数组是否为空。这样它就更干净了。

      【讨论】:

      • 我相信问题是不同的。你认为他已经将 Result Resource 转换为数组了吗?
      • 是的,我认为。因为到目前为止,我们无法看到他是否将其转换为数组。如果我们能看到它之前的其他代码就好了。
      【解决方案4】:

      PDO::query() 返回一个 PDOStatement 对象,失败时返回 FALSE

      var_dump($res);输出什么?

      【讨论】:

        猜你喜欢
        • 2014-04-30
        • 2017-05-18
        • 2012-08-14
        • 2023-03-15
        • 2015-03-14
        • 2015-07-31
        • 2015-10-29
        • 2013-03-05
        • 2013-03-01
        相关资源
        最近更新 更多