php fetch_assoc跳过空结果

时间:2013-08-18 20:50:01

标签: php

当回显fetch_assoc的结果时,我想跳过空(NULL)结果。 我现在的代码是:

while ($rowsoft = $resultsoft->fetch_assoc()) {
echo "<table class='swtable' cellspacing='0' summary='Software table'>
<tbody>
<tr><td class='software_up'><a class='sw' href='software.php?id=" . $rowsoft['id'] . "'>" . $rowsoft['title'] . "</a></td></tr>
<tr><td class='software'><div class='tags'>Tags: </div><a class='tags' href='#'>" . $rowsoft['tag_1'] . "</a>
<a class='tags' href='#'>" . $rowsoft['tag_2'] . "</a><a class='tags' href='#'>" . $rowsoft['tag_3'] . "</a></td></tr>
}

但并非总是有$ rowoft ['tag_1']或$ rowsoft ['tag_2']或$ rowsoft ['tag_3']的结果。 如何更改fetch_assoc()内部的回显,以便仅在有结果时才能工作? 或者我应该使用foreach还是别的什么?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以将其排除在查询之外,如@Musa所说。这可能是DB正在开展工作的最佳方式。你也可以用一堆if语句来测试$ rowsoft ['tag_1']是否为null然后不做回声。

答案 1 :(得分:0)

我通过更改sql获得了它:

select
...    
    (select concat('<a href=\'#\' class=\'tags\'>',t.tag_bg,'</a>') from tags t where t.id=s.tag1) tag_1,
    (select concat('<a href=\'#\' class=\'tags\'>',t.tag_bg,'</a>') from tags t where t.id=s.tag2) tag_2,
    (select concat('<a href=\'#\' class=\'tags\'>',t.tag_bg,'</a>') from tags t where t.id=s.tag3) tag_3
from software where...

然后在fetch_assoc()中:

<tr><td class='software'><div class='tags'>Tags:</div>" . $rowsoft['tag_1'] . "" . $rowsoft['tag_2'] . "" . $rowsoft['tag_3'] . "</td></tr>

效果很好,感谢您的建议!