2012-02-28 81 views
0

代码:PHP,PDO,的foreach

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() 

有人能解决这个问题?

+0

在查询调用之后试试'print_r($ res)'。查询失败可能会导致无法获得结果。 – 2012-02-28 08:21:58

+0

@mahi你可以添加处理::查询源到你的问题? – 2012-02-28 08:32:51

回答

0

我*不知道您正在使用的,但在foreach之前,你必须使用同一种mysql_fetch_array()等同于SQL结果资源转换为数组,你可以比上工作。错误的原因是因为$ res包含结果资源,而不是结果本身。

0

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

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

你可以试试这个

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

我们检查,如果数组不为空。这种方式更清洁。

+0

我相信问题是不同的。你认为他已经将结果资源转换为数组吗? – 2012-02-28 08:25:11

+0

是的,我认为。因为现在我们看不到他是否将它转换为数组。如果只有我们可以在它之前看到其他代码。 – Bert 2012-02-28 08:29:04

0

PDO ::查询()返回一个PDOStatement对象的对象,或失败

var_dump($res);什么是输出错误的?