如果没有类别我需要回应没有类别,如果我需要它回应有类别,我有一点问题。它显示是否有类别,但如果没有则不显示。
<tr>
<?php
$db = dbconnect();
$stmt = $db->prepare("SELECT * FROM discussion_categories");
$stmt->execute();
$result = $stmt->get_result();
while (($row = mysqli_fetch_assoc($result)) == true) {
$CategoryID = $row['CategoryID'];
$Name = $row['Name'];
$Description = $row['Description'];
$Photo = $row['Photo'];
if(!empty($CategoryID['CategoryID'])){
echo "<td>No categories</td>";
} else {
echo "<td colspan='4'><img class='profile-photo' src='" . ROOT_URI . "/uploads/" . $Photo . "'></td>";
echo "<td colspan='4'><a href='discussions.php?view={$CategoryID}'>{$Name}</a></td>";
echo "<td><a href='managecategories.php?delete={$CategoryID}'>delete</a></td>";
}
}
?>
</tr>
答案 0 :(得分:3)
这是一个容易解决的问题。
如果没有类别,则永远不会执行while循环,因为db结果中现在有行。
首先尝试检查行数:
if (mysqli_num_rows($result) == 0) {
//there are no categories
echo('no categories');
} else {
//there are categories
echo('there are categories');
//in case you want to loop through your categories now
while (($row = mysqli_fetch_assoc($result)) == true) {
$CategoryID = $row['CategoryID'];
echo($CategoryID);
//your code
}
}
这应该对你有帮助!
答案 1 :(得分:2)
如果没有类别,那么这个条件:
while (($row = mysqli_fetch_assoc($result)) == true)
这是一种冗长的写作方式:
while ( $row = mysqli_fetch_assoc($result) )
永远不会是真的,所以你将进入零次循环 - $row
永远不会有“真实”的价值。
如果我们将您的代码写成伪代码,我们会得到:
inspect each result
if the result has a non-empty CategoryID, echo "No categories"
if the result has an empty CategoryID, echo "There are categories"
end of loop
两个if检查是错误的,但更重要的是它们是在循环中。
你可能意味着这样的事情:
set found_results flag to false
inspect each result
if the result has a non-empty CategoryID, set found_results flag to true
perform other operations on the result, or use "break;" to end the loop early
end of loop
if found_results flag is true, echo "There are categories"
if found_results flag is false, echo "No categories"
我会留给你把它翻译成PHP。 :)
当然,如果你真的只需要知道是否有结果,你可以通过以下方式写出这样的内容:
mysqli_num_rows
SELECT COUNT(*)
而不是SELECT *
,也可能使用WHERE CategoryId IS NOT NULL
子句答案 2 :(得分:1)
如果你没有结果,那么它甚至不会进入while循环,所以你的条件语句是多余的(这就是你没有输出的原因)。
在你试图对它们做任何事情之前,你可以在一些评论中提到检查结果。
df <- data.frame(x = c(1, NA),
y = c(1, 1000))
ggplot(df) + geom_point(aes(x, y))
答案 3 :(得分:1)
while (($row = mysqli_fetch_assoc($result)) == true)
根据上面的代码部分。如果有任何数据从数据库返回或获取,它只会进入while循环,否则如果没有提取数据,它将不会进入循环。
如果没有类别,那么它将退出循环,因此永远不会显示此echo "<td>No categories</td>";
。
此外,由于你已经发出一个回音说“没有类别”,我认为这意味着你想要在没有类别的情况下回显输出。但是你的if条件是错误的,因为如果你想检查某个变量是否为空,你需要按照下面这样做
if(empty($CategoryID['CategoryID'])){
echo "<td>No categories</td>";
} else {
echo "<td colspan='4'><img class='profile-photo' src='" . ROOT_URI . "/uploads/" . $Photo . "'></td>";
echo "<td colspan='4'><a href='discussions.php?view={$CategoryID}'>{$Name}</a></td>";
echo "<td><a href='managecategories.php?delete={$CategoryID}'>delete</a></td>";
}
如果if(empty())
为空,则if(!empty())
为真,如果不为空,则Vector normal = w.cross(v).normalised();
为真。
答案 4 :(得分:0)
如果我理解正确,你应该使用empty()not!empty()。 代码运行如下:
if(!empty($CategoryID['CategoryID'])){ //if cat is not empty it says no cat
//notice the ! in front of empty tag
echo "<td>No categories</td>";
} else {
echo "<td>There are categories</td>";
}
根据您的代码,如果类别为空,则会显示有类别。
答案 5 :(得分:0)
通过调用While循环,您可以说,如果查询在结果中返回至少一个类别。
当没有类别时,循环就会混淆。尝试用大于零的CategoryID计数替换empty(),看看会发生什么。
如果&gt; 0
存在
否则
不存在