Во-первых, у меня нет опыта с PHP. У меня есть 2 массива - минимальное давление и максимальное давление. Они оба доступа к данным из базы данных и создать простой файл XML, как вы можете увидеть ниже: -PHP - проблема с элементом массива
<pressuremaxhourly>1010,1009,1009,1009,1008,1008,1007,1005,1004,1003,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1001,1001,1001</pressuremaxhourly>
<pressureminhourly>1001,1009,1009,1008,1008,1006,1005,1004,1003,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1001,1001,1001,1001,1001</pressureminhourly>
Проблема заключается в том, как вы можете видеть, первое значение минимального массива всегда равно последним значение максимального массива (в данном случае «1001»). Эти массивы перезаписываются каждые полчаса с новыми значениями, но проблема все еще существует. Вот код, я использую: -
$MaxPressure="select hour(datetime) AS hour, max(BarometricPressure) as MAXBP from minute WHERE DATETIME
BETWEEN (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)
AND ((CURDATE() + INTERVAL (SELECT hour(NOW()))hour))
group by hour
order by (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)";
$MaxPressureResult = mysql_query($MaxPressure) or die('Failed to query'.mysql_error());
while ($row = mysql_fetch_object($MaxPressureResult)) {
$maxpressure[]=$row->MAXBP;
}
$MinimumPressure="select hour(datetime) AS hour, min(BarometricPressure) as MINBP from minute WHERE DATETIME
BETWEEN (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)
AND ((CURDATE() + INTERVAL (SELECT hour(NOW()))hour))
group by hour
order by (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)";
$MinimumPressureResult = mysql_query($MinimumPressure) or die('Failed to query'.mysql_error());
while ($minrow = mysql_fetch_object($MinimumPressureResult)) {
$minimumpressure[]=$minrow->MINBP;
}
А вот код, который используется для создания файла XML: -
$dom = new DOMDocument();
$root = $dom->createElement("weatherdata");
$dom->appendChild($root);
$item = $dom->createElement('item', "");
$root->appendChild($item);
$maxpressure = $dom->createElement('pressuremaxhourly', "$maxpressure[0],$maxpressure[1],$maxpressure[2],$maxpressure[3],$maxpressure[4], etc....for all values);
$item ->appendChild($maxpressure);
$minimumpressure = $dom->createElement('pressureminhourly', "$minimumpressure[0],$minimumpressure[1],$minimumpressure[2],$minimumpressure[3],$minimumpressure[4], etc....for all values);
$item ->appendChild($minimumpressure);
$dom->formatOutput = true;
$dom->save('Hourly.xml')
Примечание: Я проверил данные в базе данных, и это правильно, так что ясно, что сценарий является проблемой. Извините за длинный вопрос и образец кода, надеюсь, кто-то может помочь.
##### $$$$$ $$$$$$ Update ####### Кажется SQL скрипт это не проблема. Я оставил интервал в 24, и когда я запускаю SQL-скрипт в своем рабочем столе SQL, он загружает правильные результаты.
Однако, когда он запускается из сценария выше, первый элемент всегда равен последнему элементу. IE. (min pressure [0] == min pressure [23])
Любые дальнейшие мысли?
В SQL являются возвращающегося правильные результаты и массивы содержат правильные элементы правильно? Вы можете проверить это? –
Хорошо, я запустил SQL, и они возвращают тот же результат, что и выше, так что это, очевидно, SQL-скрипт ... Опять же, не очень опытный SQL, но у меня есть чувство «час - INTERVAL 24 часа», должно быть вместо 23? – mmmbaileys
Да, поскольку вы используете МЕЖДУ, он будет включать в себя и первую и последнюю границы. Попробуйте проверить результаты. –