带有基于PHP for循环的变量的MYSQL SELECT语句

时间:2011-07-21 21:16:39

标签: php mysql for-loop

目前,$ selection输出以下内容:MIN(Bale_ID),MIN(Incoming_Moisture),它正是它应该输出的内容(它们是来自另一个表的名称)。但是,当我将$ selection放入mysql_query $ data1时,它似乎只是读取最后一个值(MIN(Incoming_Moisture))并且只显示结果。如何让查询读取$ selection中的整个元素数组?谢谢!!

while ($row1 = mysql_fetch_array($fieldnames1)) {   
$fields = $row1['fields1']; 
$explode = explode(',',$fields);

if ($row1) {
    for ($i=0; $i<$minrows; $i++) {
        if ($i<$minrows-1){
            $comma = ", ";
        }
        else {
            $comma = "";
        }
        //$selection = "MIN(".$explode[$i].")".$comma;
        //echo $selection;
        $data1 = mysql_query("SELECT MIN(".$explode[$i].")".$comma." from data WHERE (fchmitimestamp LIKE CONCAT(@year,'%',@month,'%',@day,'_________'))");
        $all1 = mysql_num_fields($data1); //return # of columns; for some reason is returning "1" right now.

        while ($row2 = mysql_fetch_array($data1)) {
            for ($col=0; $col<$all1; $col++) {
                echo $all1;
                echo "<td>Min: " . $row2[$col] . "</td>";
            }
            echo "</tr>";
        }
    }       
}
}
echo "</table>";

2 个答案:

答案 0 :(得分:1)

查看代码中的操作顺序:

loop {
     ... fetch data ...
     ... assign results to $data1 ...
}

你的循环中没有任何地方输出或保存你在$data1中得到的结果,所以循环的每次迭代都会覆盖前一次迭代的结果 - 换句话说,只有最后一次迭代的结果将是存储

答案 1 :(得分:0)

每个循环周期运行一次查询(一次一个字段),并且由于trailin逗号,因为第一个产生SQL错误,所以除了最后一个之外,这些不会被回显。

-- notice the error in first query
SELECT MIN(Bale_ID), from data WHERE (fchmitimestamp LIKE CONCAT(@year,'%',@month,'%',@day,'_________'))
SELECT MIN(Incoming_Moisture) from data WHERE (fchmitimestamp LIKE CONCAT(@year,'%',@month,'%',@day,'_________'))

使用var_dump($selection)代替echo $selection来看待自己