PHP PDO fetch 和 foreach - 我没有得到第一列

Posted

技术标签:

【中文标题】PHP PDO fetch 和 foreach - 我没有得到第一列【英文标题】:PHP PDO fetch and foreach - I'm not getting the first column 【发布时间】:2012-03-06 00:54:54 【问题描述】:

这是我的第一篇文章,所以我只是想了解社区的运作方式,以便以后我也能提供帮助......

我有一个 index.phpdb.php 用于在一个非常小而简单的应用程序中测试 PDO,第一个是 html,第二个是数据库联系。

index.php

 <h1><?php echo $fjoin_bookname; ?></h1>
    <?php foreach($join as $j): ?>
        <tr>
            <td> 
                <?php echo 'Page: '. $j['pageNumber']; ?>
            </td>
            <td>
                <?php echo $j['pageNote']; ?>
            </td>
        </tr>
    <?php endforeach; ?>

db.php

//get books and pages Join
    $query='SELECT * 
            FROM books
                INNER JOIN pages
                ON books.bookID = pages.bookID
            ORDER BY pageNumber ASC';

    $join = $db->query($query);
    $fjoin = $join->fetch();
    $fjoin_bookname = $fjoin['bookName'];

这是一个从书上获取页码和相应注释的应用程序,这将有助于在不同设备上跟踪几本书。

问题: 我没有从“页面”表中获得第一行。 在我插入 fetch 方法之前它工作正常

$fjoin = $join->fetch();
$fjoin_bookname = $fjoin['bookName'];

问题 有人能帮我解决这个问题吗?

【问题讨论】:

在foreach 周围添加&lt;table&gt;&lt;/table&gt; 标签是否有效?换句话说...您确定它根本没有输出,还是只是没有在您的 HTML 浏览器中呈现? 感谢您的回答,但这不是我刚刚展示 tr 和 td 的完整 html,但是它们在表格内。 a.tereschenkov 的答案是行之有效的! 【参考方案1】:

当你调用时

$join->fetch()

它从当前位置返回项目并将光标移动到下一个。 您可以将所有元素获取到 var,然后从第一个元素中获取 fjoin_bookname:

db.php

//get books and pages Join
$query='SELECT * 
        FROM books
            INNER JOIN pages
            ON books.bookID = pages.bookID
        ORDER BY pageNumber ASC';

$statement = $db->query($query);
$join = $statement->fetchAll();
$fjoin = $join[0];
$fjoin_bookname = $fjoin['bookName'];

【讨论】:

太好了!,它会以 0 的位置进入下一个位置,效果很好,非常感谢!!!

以上是关于PHP PDO fetch 和 foreach - 我没有得到第一列的主要内容,如果未能解决你的问题,请参考以下文章

PHP:PDO fetch() 不显示结果

使用 foreach 获取时覆盖 PDO 的 fetch()

带有 PDO::FETCH_ASSOC 的 foreach 循环,提供的参数无效

PHP PDO fetch() 详解

删除foreach最后一个逗号PHP [重复]

pdo中query()与prepare().execute()