我想知道为什么我的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之前进行了提取吗?如果是这样,我怎么能改变它来防止这个问题?
答案 0 :(得分:1)
您可以像这样修改您的代码
目前您正在做的是首先检查否。 PDO :: Fetch()的行,稍后您使用PDOStatement::fetchAll
您可以采用以下方法更明确
计算行数PDOStatement :: rowCount()返回受a影响的行数 DELETE,INSERT或UPDATE语句。
然后使用PDOStatement::fetch
来获取该行。
$sth->fetch(PDO::FETCH_ASSOC);
答案 1 :(得分:0)
更改
$row = $stmt -> fetch();
到
$row = $stmt -> fetchAll(PDO::FETCH_ASSOC);
将所有行作为关联数组返回。只需循环遍历数组,即可获得结果。
希望这会有所帮助。