0

我想知道为什么我的 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 之前进行了 fetch 吗?如果是这样,我该如何更改它以防止该问题?

4

2 回答 2

2

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

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

您可以应用以下更清楚的方法

首先使用PDOStatement::rowCount()

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

然后用于PDOStatement::fetch获取行。

$sth->fetch(PDO::FETCH_ASSOC);
于 2012-11-19T04:30:51.457 回答
0

改变


 $row = $stmt -> fetch();


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

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

希望这可以帮助。

于 2012-11-19T04:31:17.943 回答