Я знаю, что могу подсчитать, сколько строк имеет определенную строку в столбцах моей таблицы, как это …
$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
.
Но как я могу это сделать для нескольких переменных строки $timeOfClass
без написания нескольких операторов SQL? У меня их много. Будет ли это чем-то вроде создания массива операторов SQL, а затем запустить их через цикл while fetchColumn(0)
?
<?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);
Используйте SQL, чтобы изменить результат так, как вы, например, добавьте предложение GROUP BY
, чтобы получить несколько счетчиков для циклирования.
Вы пытаетесь сделать это для нескольких значений $ timeOfClass?
Вы можете поместить все переменные $ timeOfClass в массив (W-7PM-A, W-8PM-A и т. Д.), Затем используйте sql следующим образом:
SELECT count (*) FROM students WHERE timeOfClass IN ('W-7PM-A', 'W-8PM-A', …) GROUP BY timeOfClass
Это даст вам один SQL-запрос, который вы можете прокрутить по строкам, чтобы получить индивидуальные подсчеты.
where timeofclass in ("value 1, 'value 2');
– это правильный синтаксис sql. Вы можете взять свой массив и создать предложение in и объединить его в конец вашего оператора. обрабатывает запрос и принимает CSV значений в качестве параметра. HTH