为什么我两次在结果集中获取列值?

时间:2019-02-22 18:52:30

标签: php pdo iteration resultset

我正在尝试打印出我创建的测试表中的所有行和列。

我的相关代码:

    $sql = "select * from ITEM";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();

//    $stmt->execute(array(
//    $_POST['ModuleID']
//      ));
//     $result = $stmt->fetch();
     $result = $stmt->fetchAll();
     foreach ($result as $row)
     {
       echo "<TR>";
//       echo $row[0];
     foreach ($row as $col) {
//       for ($i = 0; $i < 5; $i++) {
         echo "<TD>";
//         echo $row[$i];
         echo $col;
         echo "</TD>";
       }
       echo "</TR>";
     }

所以我的问题是,当我尝试手动对行值进行迭代(您可以看到在哪里尝试了for($ i = 0; $ i <5; $ i ++))时,我不知道如何来获取列数,因此只打印出5。当我切换为使用foreach($ row as $ col)时,我可以看到所有数据,但是每列都会在此之后立即生成重复项。

因此,我正在寻找一种以编程方式在结果集中查找列长的方法,或者寻找一种方法来使用我的foreach解决方案(仅生成1列)

1 个答案:

答案 0 :(得分:1)

因为PDO返回这样的数组:

[0] => Array
        (
            [name] => apple
            [0] => apple
            [colour] => red
            [1] => red
        )

然后,当您循环所有行时,将得到索引和关联的结果。

http://php.net/manual/en/pdostatement.fetchall.php

尝试$result = $stmt->fetchAll(PDO::FETCH_ASSOC);