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

Php 变量mysql查询(其中$Variable=everything),php,mysql,Php,Mysql,我正在考虑最有效的方法来生成一个函数,该函数返回我在某个查询中得到的行数。我需要有查询的很多变体,因为我使用它进行大量统计。(在真实版本中,它大约是5个变量,而不是2个)。我没有发布我的完整代码,而是创建了一个小片段,指出我试图克服的问题$conn是我的PDO连接。表的名称以及字段的名称是固定的 function stackOverflowDemo($var1,$var2){ global $conn; $totalrows = $conn->query("select count(*)

我正在考虑最有效的方法来生成一个函数,该函数返回我在某个查询中得到的行数。我需要有查询的很多变体,因为我使用它进行大量统计。(在真实版本中,它大约是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和secondfield=30
)但现在有了线索:现在我想要的行数是
firstfield为1,secondfield为任意值(比如*)。我如何才能让它为我工作,而不必编写新函数或专用查询

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');
也许这对你有用

也许这对你有用

也许这对你有用

也许这对你有用

现在我想知道
firstfield
1
secondfield
为任意值的行数(如*)

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

省略
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;
现在我想知道
firstfield
1
secondfield
为任意值的行数(如*)

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

省略
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;
现在我想知道
firstfield
1
secondfield
为任意值的行数(如*)

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

省略
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;
现在我想知道
firstfield
1
secondfield
为任意值的行数(如*)

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

省略
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;

可能的重复甚至不接近重复。我有一个查询问题,不是速度问题。只需让函数接受可变数量的参数,并跳过对没有为其定义标准的字段的检查。或者,更好的是,通过采用(field=>value)结构的关联数组使这个函数更灵活。好吧,我被术语“高效”误导了。可能的重复甚至不接近于重复。我有一个查询问题,不是速度问题。只需让函数接受可变数量的参数,并跳过对没有为其定义标准的字段的检查。或者,更好的是,通过采用(field=>value)结构的关联数组使这个函数更灵活。好吧,我被术语“高效”误导了。可能的重复甚至不接近于重复。我有一个查询问题,不是速度问题。只需让函数接受可变数量的参数,并跳过对没有为其定义标准的字段的检查。或者,更好的是,通过采用(field=>value)结构的关联数组使这个函数更灵活。好吧,我被术语“高效”误导了。可能的重复甚至不接近于重复。我有一个查询问题,不是速度问题。只需让函数接受可变数量的参数,并跳过对没有为其定义标准的字段的检查。或者,更好的是,通过采用(field=>value)结构的关联数组使这个函数更加灵活。