0

无论如何,我都不是全职 PHP 程序员,但想知道最有效的方法是什么?我正在运行 fetch 以获取一些我想在页面上显示的数据。查询结果通常有多行。

下面的效果很好,除了最后一个没有显示的 else 语句。这部分不起作用。基本上我想显示我的数据行,如果什么都不存在,抛出一条消息说“无”。

我做了一些阅读,它看起来像一个while循环+多个结果集,你不能简单地使用标准else......两者都带有!empty或isset。

有人提到做柜台?这将是实现这一目标的最佳方式。对任何建议持开放态度,因为我将来可能会添加更多这样的数据,并希望以正确的方式进行。

谢谢!

while($myvariable = oci_fetch_assoc($stmt))
{
if(!empty($myvariable))
    {
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>" . $myvariable['myrowdata'] . </td></tr>";

    }
    else 
    {
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>None</td></tr>";
    }
}
4

4 回答 4

1

查看 php 手册上的 oci_fetch_assoc。此函数通常在循环中调用,直到它返回 FALSE,表示不存在更多行。因此,您的 while 循环中不需要任何其他 if 或 else 。

于 2012-05-10T20:48:31.303 回答
0

通过获取第一行并检查它是否不是 FALSE,在循环之前进行检查;然后,如果不是,则将其提供给循环并在循环的 END 处获取下一行。这被称为“启动循环”并且并不少见。

if(!($myvariable = oci_fetch_assoc($stmt))) {
    echo "<tr><th>DISPLAY FIELD NAME:</th><td>None</td></tr>";
} else {
    while($myvariable) {
        echo "<tr><th>DISPLAY FIELD NAME:</th><td>" . $myvariable['myrowdata'] . </td></tr>";
        $myvariable = oci_fetch_assoc($stmt));
    }
}
于 2012-05-10T20:49:47.943 回答
0

我认为这个参考将帮助您使用函数 oci_fetch_assoc: http ://php.net/manual/en/function.oci-fetch-assoc.php#100304

于 2012-05-10T20:51:58.050 回答
0

只有当您在“$myvariable”中获得某些内容时,您的 while 语句才会运行,因此您的 if 语句是多余的,而您的 else 在这种情况下是无关紧要的。如果您想按照您的想法运行某些东西,您可以执行“oci_fetch_all()”,然后循环执行您的 if/else。

于 2012-05-10T20:54:12.843 回答