【问题标题】:Last Item in Query Results - PHP查询结果中的最后一项 - PHP
【发布时间】:2012-01-04 14:13:03
【问题描述】:

我的网站上有一个页面名称数据库,我想循环查询并输出每个页面名称。我已经使用 PDO 完成了查询:

// Site Menu Items
try {
  $mds_system1 = new PDO('mysql:dbname=mds_system;host=127.0.0.1', 'root', '');
} catch (PDOException $ex) {
  echo 'Connection failed: ' . $ex->getMessage();
}

$sql = "SELECT longName, shortName, `position`, standalone FROM `site-menu`";
$sitemenu = $mds_system1->query($sql);

然后我就这样循环查询(CMS 的一部分,用于编辑网站上的页面):

    $n=1;
    foreach ($sitemenu as $item) {
        echo "<a href='?page=edit&amp;edit=".$item['shortName']."' target='_self'>";

        if ($n==count($sitemenu)) {
            echo $item['longName']."</a><br />";
        }
        else {
            echo $item['longName']."</a>&nbsp;|&nbsp;";
        }
        $n++;
    }

我希望在最后一个结果之后没有分隔符,根据我看到的许多示例,此代码应该有效。但是,“count($sitemenu)”变量始终设置为“1”,无论结果数量如何。因此,什么都没有发生。我尝试的代码是否无法使用 PDO?

【问题讨论】:

  • 可能是个愚蠢的问题:你确定 $sitemenu 是一个 php 数组吗?
  • 不是“可能很愚蠢”,而是人们可能会问的最明智的问题。
  • 请注意,如果只使用一张表,则无需指定表名。我缩短了您的代码以使其更具可读性。

标签: php foreach pdo


【解决方案1】:

您忘记了一项必需的操作。
除了查询执行之外,您还必须使用fetchAll() 方法获取实际结果。
你会得到你想要的数组。

所以,实际上您的问题与标题中的问题无关,而是与基本的 PDO 使用有关。

当然也缺少调试。
由于您必须自己向 cmets 提出问题,并将问题归结为 $sitemenu 内容。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2018-09-19
    相关资源
    最近更新 更多