使用带有两个查询的php if…else语句

使用带有两个查询的php if…else语句,php,Php,我有两个查询,用于计算数据库中“艺术家”和“组”的数据数量。如果有艺术家或组(或两者)的数据要显示,我想显示一条消息,如果两个艺术家或组(或两者)的数据都返回0,则不显示任何内容 我有以下代码似乎不起作用: <?php if (($numrowsartists==0)OR($numrowsgroups==0)) { } else { echo "There is information to display."; } ?> 提前谢谢。我相信这可能

我有两个查询,用于计算数据库中“艺术家”和“组”的数据数量。如果有艺术家或组(或两者)的数据要显示,我想显示一条消息,如果两个艺术家或组(或两者)的数据都返回0,则不显示任何内容

我有以下代码似乎不起作用:

<?php if (($numrowsartists==0)OR($numrowsgroups==0)) {

 } else {
        echo "There is information to display.";
        }
?>

提前谢谢。我相信这可能是一个超级基本的修复程序,但我对php还是很陌生,希望能得到一些帮助。

您应该从行中获取值,例如使用别名作为列名

$query = "SELECT COUNT(*) as num_artists  FROM `Credit_To_Artist` AS c2a 
INNER JOIN `Credits` AS cr ON cr.credit_id = c2a.credit_id
INNER JOIN `Artist` AS a ON a.artist_id = c2a.artist_id
WHERE c2a.song_id = $id";

$res = mysql_query($query);

$row = mysql_fetch_assoc($res);
$numrowsartists = row['num_artists'];

$query = "SELECT COUNT(*) as  num_groups FROM `Credit_To_Artist` AS c2a 
INNER JOIN `Credits` AS cr ON cr.credit_id = c2a.credit_id
INNER JOIN `Artist_Group` AS ag ON ag.group_id = c2a.group_id
WHERE c2a.song_id = $id
ORDER BY ag.group_name ASC";

$res = mysql_query($query);
$row = mysql_fetch_assoc($res);
$numrowsgroups = row['num_groups'];

有几种解决方案,最简单的是:

if($numrowsartists[0]+$numrowsgroups[0] > 0)
然而,正如人们所说,您不应该再使用mysql_*函数了。 假设ID是用户输入,您应该真正使用准备好的语句。 此外,您可以在一个查询中处理这两个测试:

$stmt = $con->mysqli_prepare("SELECT COUNT(1) as `count` FROM `Credit_To_Artist` AS c2a 
      INNER JOIN `Credits` AS cr ON cr.credit_id = c2a.credit_id
      INNER JOIN `Artist` AS a ON a.artist_id = c2a.artist_id
      INNER JOIN `Artist_Group` AS ag ON ag.group_id = c2a.group_id
      WHERE c2a.song_id = ?");
$stmt->bind_param('i',$id);
$stmt->execute();
if($stmt->get_result()->fetch_array()[0] > 0){
    ...
}else{
    //message that nothing was found
}

mysql_*函数在PHP5.5.0中被弃用,在PHP7.0.0中被删除。将代码切换为使用或替代。
mysql\u fetch\u assoc
获取一行,因此它不等于0。使用num_rows函数来计算行数。您应该发布数据库架构和值。您还需要记住
NULL
!=<代码>0或“空”。
$stmt = $con->mysqli_prepare("SELECT COUNT(1) as `count` FROM `Credit_To_Artist` AS c2a 
      INNER JOIN `Credits` AS cr ON cr.credit_id = c2a.credit_id
      INNER JOIN `Artist` AS a ON a.artist_id = c2a.artist_id
      INNER JOIN `Artist_Group` AS ag ON ag.group_id = c2a.group_id
      WHERE c2a.song_id = ?");
$stmt->bind_param('i',$id);
$stmt->execute();
if($stmt->get_result()->fetch_array()[0] > 0){
    ...
}else{
    //message that nothing was found
}