使用PHP计算空列Mysql

使用PHP计算空列Mysql,php,mysql,Php,Mysql,我想计算空列或具有特定值的列 $q = mysql_query(" SELECT SUM( (`foto` = 'avatar_small.png') + (`email` IS NULL) + (`cidade` IS NULL) + (`estado` IS NULL) + (`endereco` IS NULL) +

我想计算空列或具有特定值的列

    $q = mysql_query("
        SELECT SUM(
            (`foto` = 'avatar_small.png') +
            (`email` IS NULL) + 
            (`cidade` IS NULL) + 
            (`estado` IS NULL) + 
            (`endereco` IS NULL) + 
            (`numero` IS NULL) + 
            (`cep` IS NULL) + 
            (`telefone` IS NULL)
        ) FROM `info_complementos` WHERE id_user = ".$_SESSION['usuario_cargo']) or die(mysql_error());

    $retorno = mysql_num_rows($q);  

    return $retorno[0];

问题是它显示了结果

您可以使用mysql中的
COUNT
函数对返回的行进行计数。因此,您希望过滤掉
WHERE
子句中不需要的行。这将统计与所有条件匹配的所有行。如果要匹配包含一些空值的行,可以将
更改为

<?php
$q = mysql_query("
SELECT COUNT(*) FROM `info_complementos` 
WHERE 
      id_user = $_SESSION['usuario_cargo'] AND
      `foto` = 'avatar_small.png' AND
      `email` IS NULL AND
      `cidade` IS NULL) AND
      `estado` IS NULL) AND
      `endereco` IS NULL AND 
      `numero` IS NULL AND 
      `cep` IS NULL AND
      `telefone` IS NULL");

$result = mysql_fetch_array($q);
echo $result[0];

你所说的“它显示结果”是什么意思?我建议选择标准为真的
COUNT(*)
(列为
NULL
,等等)。然后获取结果,而不是使用
mysql\u num\u rows
。显示结果或部分结果,并解释其与所需结果之间的差异非常有用。您试图匹配什么?包含所有空列的行还是只包含一些空列的行?