首页 > 解决方案 > 为什么 $stmt->fetch(PDO::FETCH_NUM); 是否返回具有数字索引和列名的数组?

问题描述

尝试从仅具有数字索引的数据库行中获取数组:

$sql = "SELECT * from resumenes";
    $stmt = $db->prepare($sql);
    $stmt->execute();
    $stmt->fetch(PDO::FETCH_NUM);
    foreach ($stmt as $row) {
        print_r($row);
    }

我得到了数字索引和关联索引,就好像他使用过 PDO::FETCH_BOTH

标签: phppdo

解决方案


3种可能性:

  1. 在战利品中使用$row归还$stmt->fetch(PDO::FETCH_NUM)
$stmt = $db->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
    print_r($row);
}
  1. 指定请求获取模式:
$stmt = $db->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_NUM); // Fetch mode for this statement
$stmt->execute();
foreach ($stmt as $row) {
    print_r($row);
}
  1. 指定默认获取模式,通常在连接之后:
$pdo = new PDO(...);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_NUM);

推荐阅读