代码:
$Username = $_SESSION['VALID_USER_ID'];
$q = mysql_query("SELECT * FROM `article_table`
WHERE `Username` = '$Username'
ORDER BY `id` DESC");
while($db = mysql_fetch_array($q)) { ?>
<?php if(!isset($db['article'] && $db['subject'])) {
echo "Your articles";
} else {
echo "You have no articles added!";
} ?>
<?php } ?>
所以我希望来自特定用户名(例如:db['article']
)的行($db['subject']
和$Username = $_SESSION['VALID_USER_ID'];
)如果不为空则回显信息,否则如果为空则回显例如“你没有添加任何文章!”
如果代码工作的行中有一些信息,则回显信息但是如果行为空则不回显任何内容,代码应该回显“你没有添加任何文章!”但这条线没有出现,哪里出错了?
我尝试过!isset
,!empty
,!is_null
,但不起作用。
答案 0 :(得分:6)
我认为你想要达到的目标是:
$Username = $_SESSION['VALID_USER_ID'];
$q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY `id` DESC");
if(mysql_num_rows($q) > 0)
{
echo "Your articles:\n";
while($db = mysql_fetch_array($q)) {
echo $db['subject']." ".$db['article']."\n";
}
}
else
{
echo "You have no articles added!";
}
?>
答案 1 :(得分:2)
我不明白。你有用户名的文章行,但没有文章,即:
| id | user | article |
-------------------------------------
| 1 | X | NULL |
如果是这样,你可以测试:
if($db['article'] == NULL) { .... } else { .... }
否则,如果你没有user = x的行,当没有记录时,mysql将返回一个空的结果。
所以,基本上,如果在选择中找不到行:SELECT * FROM article_table WHERE Username = 'X';
,则可以测试
if(mysql_num_rows($q) > 0) { .... } else { .... }
但是,不推荐使用mysql_函数。看看准备好的陈述。
答案 2 :(得分:0)
您的if
声明中存在逻辑错误 - 您想要检查文章和主题是否都已设置。
使用当前代码,您将$db['article']
与$db['subject']
进行比较,并检查结果是否已设置。你需要稍微改变一下:
而不是:
if(!isset($db['article'] && $db['subject'])) {
尝试:
if(isset($db['article']) && isset($db['subject'])) ...
答案 3 :(得分:0)
我会做这样的事情:
$articles='';
$Username = $_SESSION['VALID_USER_ID'];
$q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY `id` DESC");
while($db = mysql_fetch_array($q)) {
if(isset($db['article']) && isset($db['subject'])) {
$articles .= $db['article']."<br/>";
}
}
if($articles != ''){
echo $articles;
}
else{
echo "No articles";
}
?>
答案 4 :(得分:0)
实现您想要的最快方法是添加一个变量来验证查询是否返回任何行:
<?php $Username = $_SESSION['VALID_USER_ID'];
$i = 0;
$q = mysql_query("SELECT * FROM `article_table` WHERE `Username` = '$Username' ORDER BY `id` DESC");
while($db = mysql_fetch_array($q)) {
$i = 1;
if(!isset($db['article'] && $db['subject'])) { echo "Your articles"; } ?>
<?php }
if ($i == 0) echo "You have no articles";
?>
你试图在while循环中回显“no articles”,只有当查询返回信息时才会到达那里,这就是为什么如果它返回1行或更多行,$ i将变为1,否则它将保持为0。
答案 5 :(得分:-1)
在你的情况下:
$numArticles = mysql_num_rows($q);
if($numArticles > 0)
echo 'Your articles';
else
echo 'No articles :((((';
我建议您继续使用PDO与DB进行通信。