Оператор MYSQL SELECT с переменной на основе PHP для цикла - PullRequest
1 голос
/ 22 июля 2011

В настоящее время $ 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 ]

1 голос
/ 22 июля 2011

Посмотрите порядок операций в вашем коде:

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

Нигде в вашем цикле вы не выводите и не сохраняете результаты, полученные в $data1, поэтому каждая итерация цикла перезаписывает результаты предыдущей итерации - другими словами, будут сохраняться только результаты итерации LAST.

0 голосов
/ 22 июля 2011

Вы выполняете запрос один раз за цикл цикла (1 поле за раз), и поскольку первые из них приводят к ошибке SQL из-за запятой trailin, они не будут отображаться, кроме последнего.

-- 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, чтобы увидеть себя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...