我有以下代码 - 它会生成一系列发送到数据库的查询:
$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
和{{1然后从q14e
到q15
。
我看过继续,但更多的是跳过迭代并且没有帮助我。
我正在努力调整上面的代码来处理这种非顺序情况。任何想法和建议都欢迎。
答案 0 :(得分:2)
我的字段从
q1
到q13
,但随后转到q14a
,q14b
,q14c
,q14d
和{{1然后从q14e
到q15
。
q54
如果您不需要按编号顺序执行语句,那么如果计数器为14,您也可以在第一个循环中跳过一个语句,然后再进行第二个循环(不嵌套到第一个循环中),那之后是q14s。
答案 1 :(得分:0)
您可以从表中获取列并进行测试,看看它们是以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数组并使用它:
$columns = array('q1', 'q2', 'q54'); //etc...
foreach($columns as $r) {
$query .= "SELECT COUNT(". $r .") as Responses FROM tresults;";
}