0

我有以下代码 - 它产生一系列发送到数据库的查询:

$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";
}

我遇到的问题很简单,在数据库中,数字不是顺序的。

我有从 to 到的字段,q1然后q13q14a, q14b, q14c,q14d然后q14eq15to q54

我已经看过continue但这更多是为了跳过迭代并且没有帮助我。

我正在努力调整上面的代码来处理这种不连续的情况。欢迎任何想法和建议。

4

2 回答 2

2

我有从 to 到的字段,q1然后q13q14a, q14b, q14c,q14d然后q14eq15to 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 之后。

于 2015-01-19T23:31:16.513 回答
0

您可以从表中获取列并测试它们是否以q(或使用 a 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 数组并使用它:

$columns = array('q1', 'q2', 'q54'); //etc...

foreach($columns as $r) {
    $query  .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
}
于 2015-01-19T23:26:41.673 回答