【问题标题】:Why am I getting my column values in my result set twice? [duplicate]为什么我的结果集中的列值两次? [复制]
【发布时间】:2019-02-22 18:52:29
【问题描述】:

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

我的相关代码:

    $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

所以我正在寻找一种方法来以编程方式查找结果集中的列长度,或者找到一种方法来使用我的 foreach 解决方案,它只生成 1 列

【问题讨论】:

  • 你能把表格和结果贴出来吗?
  • “列的长度”是什么意思?
  • 你能发帖print_r($result)吗?听起来PDO::ATTR_DEFAULT_FETCH_MODE 可能是PDO::FETCH_BOTH。通常将其设置为 PDO::FETCH_ASSOC 最有用(请参阅我上面的帖子),但有多种选项 - 请参阅 PDO Predefined Constants 了解更多信息。

标签: php pdo iteration resultset


【解决方案1】:

因为 PDO 正在返回一个这样的数组:

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

当你循环所有行时,你会得到索引和关联的结果。

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

试试$result = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多