|
Странное поведение переменной в php. | ☑ | ||
---|---|---|---|---|
0
megabax
01.08.15
✎
11:11
|
Добрый день. Запускаю вот такой скрипт (фрагмент кода):
//SQL - запрос для поиска устаревших записей $query="select MIN(actdate) as mindate from _eprog_tariffs"; //выполним запрос $rows_selection=mysql_query($query); if(!$rows_selection) { echo "<h1><font color=red>Error query ".$query."</h1>"; } $count=mysql_num_rows($rows_selection); if($count!=0) { $mindate=false; //выведем результат запроса for($i=0; $i<=$count; $i++) { $arr=mysql_fetch_array($rows_selection); $mindate=$arr["mindate"]; break; } база пуста, но запрос возвращает одну строку, где $mindate получается пустое значение. При любой попытке обращения к $mindate, например такому: if(!empty($mindate)) вылазит ошибка 500. Скрпиты запускается из 1С 8.2. Подскажите пожалуйста, как лечить. |
|||
1
Zhuravlik
01.08.15
✎
12:20
|
(0) Вообще-то обычный запрос отрабатывает точно также. И по-моему логично: функция должна вызывать значение. В данном случае MIN по пустой таблице возвращает NULL, что вполне соответствует (моим) представлениям о прекрасном. И 1С-ным тоже. Прогоните такой код:
тз = Новый ТаблицаЗначений; тз.Колонки.Добавить("Тест", Новый ОписаниеТипов("Число")); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | тз.Тест |ПОМЕСТИТЬ ВТ_Данные |ИЗ | &тз КАК тз |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МИНИМУМ(ВТ_Данные.Тест) КАК Тест |ИЗ | ВТ_Данные КАК ВТ_Данные"; Запрос.УстановитьПараметр("тз", тз); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий(); Переменная_NULL = ВыборкаДетальныеЗаписи.Тест; // посмотреть в отладчике |
|||
2
Zhuravlik
01.08.15
✎
12:21
|
(1) "функция должна вызывать значение" -> "функция должна ВОЗВРАЩАТЬ значение"
|
|||
3
Asmody
01.08.15
✎
15:10
|
(0) "MIN() returns NULL if there were no matching rows."
http://dev.mysql.com/doc/refman/5.6/en/group-by-functions.html#function_min |
|||
4
Asmody
01.08.15
✎
15:17
|
вот так строчку перепиши:
$mindate=$arr["mindate"] ? $arr["mindate"] : false; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |