Php 使用许多不同的参数计算表中的行数
我知道我可以像这样计算表中的列中有多少行具有某个字符串Php 使用许多不同的参数计算表中的行数,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我知道我可以像这样计算表中的列中有多少行具有某个字符串 $timeOfClass="W-7PM-A"; $inclass101 = $db->prepare("SELECT count(*) FROM students WHERE timeOfClass =?"); $inclass101->execute(array($timeOfClass)); $inclass101rows = $inclass101->fetchColumn(0); $inClass
$timeOfClass="W-7PM-A";
$inclass101 = $db->prepare("SELECT count(*) FROM students WHERE timeOfClass =?");
$inclass101->execute(array($timeOfClass));
$inclass101rows = $inclass101->fetchColumn(0);
$inClass101rows
反映了我的数据库中$timeOfClass
为W-7PM-A
的行数
但是,如何在不编写多个SQL语句的情况下对
$timeOfClass
字符串的多个变量执行此操作?我有很多。这是否类似于生成一个SQL语句数组,然后通过fetchColumn(0)
的while循环运行它们?其中timeofclass位于(“值1,'值2'));
是正确的sql语法。您可以获取时间数组,创建in子句并将其连接到语句末尾。您还可以创建一个存储过程来处理查询,并将CSV值作为参数。
HTH
您是否尝试对$timeOfClass的几个值执行此操作
您可以将所有$timeOfClass变量放入一个数组(W-7PM-A、W-8PM-A等),然后使用如下sql:
选择计数(*)
来自学生
其中类的时间('W-7PM-A','W-8PM-A',…)
按课时分组
这将为您提供一个SQL查询,您可以在行中循环以获得单个计数。示例:WHERE timeOfClass IN('W-7PM-A','W-7PM-B','W-7PM-C');
(使用中的)然后是数组。如果您要问的是“如何拥有一个可变长度数组并将其传递到一个准备好的语句中?”“答案是你不能不跳过一些障碍。但是看看“数组”和“准备好的语句”以及pdo,你会发现一些方法很棒!但是,我如何分离结果以找到表中每个字符串的实例数?我不知道数据库抽象是如何工作的,但是您可以将groupbytimeofclass
添加到SQL查询中,并对结果进行循环,它会给你每次上课的次数。你有一个双引号,其中应该是一个单引号&缺少一个单引号<代码>(“值1”,“值2”)
-重写(“值1”,“值2”)
<?php
// $timesOfClasses is an array in the form:
$timesOfClass = array(
"W-7PM-A",
"X-8AM-Y",
"...",
);
// Generate the IN clause safely for usage with prepared statements
$params = substr(str_repeat("?,", count($timesOfClass)), 0, -1);
$inclass101 = $db->prepare("SELECT COUNT(*) FROM `students` WHERE `timeOfClass` IN({$params})");
$inclass101->execute($timesOfClass);
$inclass101rows = $inclass101->fetchColumn(0);