У меня есть следующий код — он производит серию запросов, которые отправляются в базу данных:
$a = 'q';
$aa = 1;
$r = "$a$aa";
$q = 54;
while($aa <= $q){
$query .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
$aa = $aa + 1;
$r = "$a$aa";
}
Проблема у меня проста, в базе данных, номер не является последовательным.
У меня есть поля, которые выходят из q1
в q13
но потом идет q14a
, q14b
, q14c
, q14d
а также q14e
а затем из q15
в q54
,
Я смотрел на Продолжить но это больше для пропуска итераций и не помогло мне.
Я изо всех сил пытаюсь приспособить вышеупомянутый код, чтобы справиться с этой непоследовательной ситуацией. Любые идеи и предложения приветствуются.
У меня есть поля, которые выходят из
q1
вq13
но потом идетq14a
,q14b
,q14c
,q14d
а такжеq14e
а затем изq15
вq54
,
for($i=1; $i<=54; ++$i) {
if($i != 14) {
echo 'q' . $i . "<br>";
}
else {
for($j='a'; $j<='e'; ++$j) {
echo 'q14' . $j . "<br>";
}
}
}
Если вам не нужно выполнять операторы в порядке нумерации, то вы также можете просто пропустить один в первом цикле, если счетчик равен 14, и затем иметь второй цикл (не вложенный в первый), который выполняет Q14s потом.
Вы можете получить столбцы из таблицы и проверить, начинаются ли они с q
(или используйте preg_match
):
$result = query("DESCRIBE tresults");
while($row = fetch($result)) {
if(strpos($row['Field'], 'q') === 0) {
$query .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
}
}
Или создайте массив столбцов и используйте его:
$columns = array('q1', 'q2', 'q54'); //etc...
foreach($columns as $r) {
$query .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
}