PDO返回空数据

时间:2012-11-19 04:22:35

标签: php pdo

我想知道为什么我的PDO语句返回1行但是当我将它分配给变量时数据为空。

我有这个:

    $stmt = $pdo->prepare("SELECT count(uid) AS total,uid FROM accounts WHERE username = ? AND pass = ?"); 
    try {
        $stmt->execute(array($temp[0],$temp[1]));
    } catch (PDOException $e) {
        echo $e -> getMessage(); exit;
    }

    $row = $stmt -> fetch();
    if(!$row['total']){
        echo json_encode(0);
    } else {            
        $_SESSION['userData'] = $stmt->fetchAll(PDO::FETCH_ASSOC);
        echo json_encode($_SESSION['userData']); 
    }

当我回应会话时,它返回[]

是因为我在fetchAll之前进行了提取吗?如果是这样,我怎么能改变它来防止这个问题?

2 个答案:

答案 0 :(得分:1)

您可以像这样修改您的代码

目前您正在做的是首先检查否。 PDO :: Fetch()的行,稍后您使用PDOStatement::fetchAll

获取该行

您可以采用以下方法更明确

首先使用PDOStatement::rowCount()

计算行数
  

PDOStatement :: rowCount()返回受a影响的行数   DELETE,INSERT或UPDATE语句。

然后使用PDOStatement::fetch来获取该行。

$sth->fetch(PDO::FETCH_ASSOC);

答案 1 :(得分:0)

更改


 $row = $stmt -> fetch();


 $row = $stmt -> fetchAll(PDO::FETCH_ASSOC);

将所有行作为关联数组返回。只需循环遍历数组,即可获得结果。

希望这会有所帮助。