变量mysql查询(其中$Variable=everything)


Variable mysql query (where $variable = everything)

我正在考虑最有效的方法来创建一个函数,该函数返回我在某个查询中获得的行数。我需要有很多查询的变体,因为我使用它来进行很多统计。(在实际版本中,它大约是5个变量,而不是2个)我没有发布完整的代码,而是创建了一个小片段,指出我试图克服的问题$conn是我的PDO连接。表的名称以及字段的名称都是固定的。

function stackOverflowDemo($var1,$var2){
global $conn;
$totalrows = $conn->query("select count(*) from $table WHERE firstfield = $var1 AND secondfield = $var2 ")->fetchColumn();
return $totalrows;
}
$output = stackOverflowDemo('1','30');

所以现在它会给我满足上述条件的行数。(firstfield = 1 AND secondfield = 30),但现在线索来了:现在我想要firstfield is 1 and secondfield is anything(像*)所在的行数。在不必编写新函数或专用查询的情况下,我如何让它为我工作?

function stackOverflowDemo($var1,$var2){
global $conn;
$query = "select count(*) from $table WHERE firstfield IS $var1 AND secondfield IS $var2";
$totalrows = $conn->query($query)->fetchColumn();
return $totalrows;
}
$output = stackOverflowDemo('1','NOT NULL');

也许这对你有用?

现在我想要其中firstfield1并且secondfield是任何东西(如*)的行数

您的查询应该分别查找每个firstfieldsecondfield的出现次数,然后对它们进行计数。

secondfield省略null条目,您可以尝试以下操作:

select  
    sum(firstfield) first_field_count
  , sum(secondfield) second_field_count
from (
select
    case when firstfield=1 then 1 else 0 end as firstfield
  , case when secondfield is not null then 1 else 0 end as secondfield
from table_name
) t;