我认为PDO fetch()和fetchColumn()互相阻塞

时间:2019-03-19 07:14:38

标签: mysql pdo

所以我正在尝试PDO查询。看看这个片段:

1. $rows = $stmt->fetchColumn();
2. echo $rows;
3. $row = $stmt->fetch();
4. print_r($row);

这只是一个观察...不确定如何正确! 第2行被执行并返回行数(在我的情况下为1,因为我只是在验证用户身份)。 第4行不返回任何内容。

如果您取消订单:

1. $row = $stmt->fetch();
2. print_r($row);
3. $rows = $stmt->fetchColumn();
4. echo $rows;

打印第2行的数组,但第4行什么也不返回!这是正确的行为吗?

无论如何,我如何获得以下结果?

if ($stmt->fetchColumn() == 1) {
    $row = $stmt->fetch();
    print_r($row);
} else {
    echo '<div class="error-message">Verify Your Credentials</div>';
}

2 个答案:

答案 0 :(得分:0)

这是正确的行为,fetchColumn提取一列。您无法提取两次。您可以使用:

/* fetches row from the result, if theres no row in the result, fetch returns false */
$row = $stmt->fetch(); 

/* compare if $row is true (in PHP, "boolean value" of unempty array is true) */
if ( $row ) { 
    print_r($row);
} else {
    echo '<div class="error-message">Verify Your Credentials</div>';
} 

答案 1 :(得分:0)

此答案可能会帮助您PDO fetch one column from table into 1-dimensional array

fetchColumn仅返回单个结果,但是您可以使用pdo :: fetch方法以不同的方式将结果展平,您应该查找它们,它们将快速而简单地整理出结果。尝试此操作以获得更多阅读内容,https://phpdelusions.net/pdo/fetch_modes