Версия от 09/19/2013 19:12
Модератор: immortal
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Версия от 09/19/2013 19:12
Только у меня после обновления от 09/19/2013 19:12 Алиса перестала говорить?
Моя Алиска живёт на Proxmox в Debian 12
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
Странно, вообще скрипты работать не стали оказывается
(((

Моя Алиска живёт на Proxmox в Debian 12
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
Код: Выделить всё
Sep 20, 2013 09:54:18 http://127.0.0.1/admin.php?pd=c2NyaXB0czp7aW5zdGFuY2U9YWRtfQ%3D%3Dpz_cGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz_&md=scripts&inst=adm&view_mode=run_script&id=12
Error:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
SELECT * FROM commands WHERE LINKED_OBJECT LIKE 'netping_o1' AND LINKED_PROPERTY LIKE 'status' AND
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\_majordomo\htdocs\lib\htmlMimeMail.class.php on line 691
Моя Алиска живёт на Proxmox в Debian 12
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
А это весь sql запрос? Если да, то он 100% не корректный, так как после and должно быть условие.
>Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\_majordomo\htdocs\lib\htmlMimeMail.class.php on line 691
Тут ругается на то что неможет подключиться к smtp-серверу.
Код: Выделить всё
SELECT * FROM commands WHERE LINKED_OBJECT LIKE 'netping_o1' AND LINKED_PROPERTY LIKE 'status' AND
>Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\_majordomo\htdocs\lib\htmlMimeMail.class.php on line 691
Тут ругается на то что неможет подключиться к smtp-серверу.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
- Amarok
- Сообщения: 1427
- Зарегистрирован: Пт дек 14, 2012 12:24 pm
- Откуда: Россия, Нижняя Тура
- Благодарил (а): 460 раз
- Поблагодарили: 126 раз
- Контактная информация:
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
ну.. а что DebMes в лог пишет на эту тему?
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
о всё.. я нашел ошибку.
Сергей слегка накосячил в последнем обновлении
Быстро исправить может он, т.к. точно знает как должно работать на самом деле.
Я могу исправить ошибку коде, но я не могу сказать какой будет результат, т.к. еще не знаю как должен работать алгоритм.
Как вариант можно откатиться назад.
Сергей слегка накосячил в последнем обновлении

Быстро исправить может он, т.к. точно знает как должно работать на самом деле.
Я могу исправить ошибку коде, но я не могу сказать какой будет результат, т.к. еще не знаю как должен работать алгоритм.
Как вариант можно откатиться назад.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
Комментарии к данной ошибке.
Файл: /modules/objects/objects.class.php
Функция: function setProperty($property, $value, $no_linked = 0)
Важно! $no_linked = 0
Т.е. в любом случае переменная $no_linked существует и равна 0(если не указано другое значение при вызове функции)
1. Проверка на существование переменной/объекта делается так isset($no_linked)
2. В данном условии нужна только проверка на то, является ли данная переменная массивом. Т.к. при любом раскладе $no_linked существует.
3. Условие else не наступит никогда. Т.к. переменная $no_linked всегда существует и она либо является массивом либо нет. Другого варианта у неё нет.
1. Если $no_linked['commands'] не существует(ну вдруг), то запрос к базе будет ошибочный, т.к. после AND ничего не будет подставлено.
2. Если $no_linked['commands'] существет, то запрос к базе опять будет с ошибкой, так как после AND должна быть указана остальная часть условия. Если конечно $no_linked['commands'] не содержит в себе эту часть условия.
3. Такие запросы к базе очень тяжело дебажить, т.к. не известны условия выборки из БД. Т.е. несчем сравнить результат.
Условие должно быть таким
count($snmpdevices) вернёт 0 если переменная $snmpdevices не содержит результата запроса к базе или не объявлена.
Файл: /modules/objects/objects.class.php
Функция: function setProperty($property, $value, $no_linked = 0)
Важно! $no_linked = 0
Т.е. в любом случае переменная $no_linked существует и равна 0(если не указано другое значение при вызове функции)
Код: Выделить всё
$tables = array('commands', 'owproperties', 'snmpproperties', 'zwave_properties', 'mqtt');
if (!is_array($no_linked) && $no_linked)
{
$no_linked=array();
foreach($tables as $t)
{
$no_linked[$k]='0';
}
}
elseif (is_array($no_linked))
{
foreach($tables as $t)
{
if (!isset($no_linked[$k]))
{
$no_linked[$k]='1';
}
}
}
else
{
$no_linked=array();
foreach($tables as $t)
{
$no_linked[$k]='1';
}
} {
2. В данном условии нужна только проверка на то, является ли данная переменная массивом. Т.к. при любом раскладе $no_linked существует.
3. Условие else не наступит никогда. Т.к. переменная $no_linked всегда существует и она либо является массивом либо нет. Другого варианта у неё нет.
Код: Выделить всё
$commands = SQLSelect("SELECT * FROM commands WHERE LINKED_OBJECT LIKE '" . DBSafe($this->object_title) . "' AND LINKED_PROPERTY LIKE '" . DBSafe($property) . "' AND " . $no_linked['commands']);
2. Если $no_linked['commands'] существет, то запрос к базе опять будет с ошибкой, так как после AND должна быть указана остальная часть условия. Если конечно $no_linked['commands'] не содержит в себе эту часть условия.
3. Такие запросы к базе очень тяжело дебажить, т.к. не известны условия выборки из БД. Т.е. несчем сравнить результат.
Код: Выделить всё
$snmpdevices = SQLSelect("SELECT ID FROM snmpproperties WHERE LINKED_OBJECT LIKE '" . DBSafe($this->object_title) . "' AND LINKED_PROPERTY LIKE '" . DBSafe($property) . "' AND " . $no_linked['snmpproperties']);
$total = count($snmpdevices);
if ($total)
Код: Выделить всё
if (isset($snmpdevices))
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Версия от 09/19/2013 19:12
или хотябы таким if ($total > 0)
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch