Есть ли причина, по которой я не мог включить два оператора mysql_fetch_array, работающие над двумя различными результатами запроса mysql в одном цикле while?
Причина в том, что у меня есть два результата запроса из базы данных mysql, каждая из которых содержит два столбца следующим образом:
Query 1: Date, Value 1 Query 2: Date, Value 2
Даты в каждом запросе всегда являются датами окончания недели с регулярными интервалами в 1 неделю, упорядоченными в порядке возрастания. Однако они могут начинаться и заканчиваться в разные даты для любого результата запроса.
Я хочу построить массивы, чтобы вернуться на вызывающую веб-страницу даты, значение 1 и значение 2, только если оба значения 1 и 2 доступны за тот же период.
Я включил блок if / else, который сравнивает первую дату в каждом запросе и устанавливает указатель, используя mysql_data_seek, для которого когда-либо результирующий набор имеет самую раннюю дату начала, чтобы обеспечить его переход на дату, соответствующую первой доступной дате в другой записи задавать.
Поскольку последняя доступная дата также может быть разной, я думал, что для обеспечения возвращаемых массивов одинаковой длины (поэтому усечение в зависимости от того, какой результат имеет более свежие данные до последней доступной даты другого результата), я думал, что Я мог бы выполнить итерацию с помощью обоих результатов запроса следующим образом:
$ReturnDate = array(); $ReturnValue1 = array(); $ReturnValue2 = array(); $i=0; while ($row1=mysql_fetch_array($res_Query1,MYSQL_NUM) && $row2=mysql_fetch_array($res_Query2,MYSQL_NUM)) { $ReturnDate[$i]= $row1[0]; $ReturnValue1[$i] = (float)$row1[1]; $ReturnValue2[$i] = (float)$row2[1]; $i++; }
Однако второй массив возвращаемых значений всегда возвращает последовательность нулей. Является ли приведенный выше код действительным?
Большое спасибо
Измените &&
на and
. Нет, я не шучу.
&&
имеет более высокую приоритетность, затем =
(но and
не), поэтому
$a = foo() && $b = bar()
будет действительно $a = (foo() && ($b = bar()))