Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Помогите получить ответ на запрос в БД mysql

0

Всем доброго времени суток! С MYSQL работаю первый раз в жизни, делаю запрос информации с бд, но что-то не могу получить ответ. Запрос делаю таким образом (использую AEL): ...

Answer();

MYSQL(Connect connid localhost ${LOGIN} ${PASS} atlasdb);

MYSQL(Query result ${connid} SELECT object FROM tc WHERE phone=${CALLERID(number)});

MYSQL(Fetch fetchid ${resultid} VAR1);

NoOp(${VAR1}); ...

на что получаю такой ответ:

-- Executing [s@test:4] Answer("SIP/110-000000a9", "") in new stack

-- Executing [s@test:5] MYSQL("SIP/110-000000a9", "Connect connid localhost login pass atlasdb") in new stack

-- Executing [s@test:6] MYSQL("SIP/110-000000a9", "Query result 1 SELECT object FROM tc WHERE phone=110") in new stack

-- Executing [s@test:7] MYSQL("SIP/110-000000a9", "Fetch fetchid VAR") in new stack [Jan 16 13:11:00] WARNING[3632]: appmysql.c:496 aMYSQLfetch: aMYSQL_fetch: missing some arguments

-- Executing [s@test:8] NoOp("SIP/110-000000a9", "") in new stack

Подскажите, что я упустил? Спасибо!

удалить закрыть спам изменить тег редактировать

спросил 2013-01-16 15:19:58 +0400

vlad.v Gravatar vlad.v
377 28 2 17

обновил 2013-01-16 20:15:46 +0400

Comments

а вы случайно не с CDR базы хотите получить ответ ? а то это точно не CDR

awsswa ( 2013-01-16 15:58:23 +0400 )редактировать

нет, это вообще не имеет отношения к CDR

vlad.v ( 2013-01-16 20:04:21 +0400 )редактировать

2 Ответа

1

resultid != result

exten => s,n,MYSQL(Connect connid ${CONNECTDB})
exten => s,n,MYSQL(Query resultid ${connid} SELECT `object` FROM tc WHERE `phone`='${CALLERID(num)}')
exten => s,n,MYSQL(Fetch fetchid ${resultid} VAR)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,Noop(VAR:${VAR})
ссылка удалить спам редактировать

ответил 2013-01-16 16:25:50 +0400

zzuz Gravatar zzuz flag of Russian Federation
6744 2 6 69
http://line24.ru/

обновил 2013-01-16 16:26:40 +0400

Comments

Переделал, как написали Вы, не помогло(( Вот что показало: - Executing [s@test:5] MYSQL("SIP/110-000000af", "Connect connid localhost login pass atlasdb") in new stack

-- Executing [s@test:6] MYSQL("SIP/110-000000af", "Query result 1 SELECT object FROM tc WHERE phone='110'") in new stack

-- Executing [s@test:7] MYSQL("SIP/110-000000af", "Fetch fetchid VAR") in new stack

WARNING[6198]: appmysql.c:496 aMYSQLfetch: aMYSQL_fetch: missing some arguments

-- Executing [s@test:8] MYSQL("SIP/110-000000af", "Clear ") in new stack

WARNING[6198]: appmysql.c:194 findidentifier: Identifier 0, identifier_type 2 not found in identifier list

WARNING[6198]: appmysql.c:510 aMYSQLclear: Invalid result identifier 0 passed in aMYSQL_clear

-- Executing [s@test:9] MYSQL("SIP/110-000000af", "Disconnect 1") in new stack

-- Executing [s@test:10] NoOp("SIP/110-000000af", "VAR:") in new stack

Был одна ошибка, стало 3

vlad.v ( 2013-01-16 20:24:43 +0400 )редактировать

что говорит прямой запрос SELECT object FROM tc WHERE phone='110' ?

zzuz ( 2013-01-16 22:23:30 +0400 )редактировать

Выдает название объекта, которому соответствует номер 110, через MySQL этот запрос работает. Может можно как-то увидеть как получает этот запрос SQL с Астериска?

vlad.v ( 2013-01-16 22:59:12 +0400 )редактировать

да. в дебаге.

zzuz ( 2013-01-17 00:13:26 +0400 )редактировать

НАШЕЛ! Спасибо всем! С вашей помощью и с помощью еще одного человека не с форума, вот в чем была фишка: ПЕРВОЕ, то что написал zzuz "resultid != result", но я сразу не допер, потом мне на эту же ошибку указал мой знакомый. Запрос с одной переменной, а ответ я ожидаю с другой переменной. ВТОРОЕ, строка, которая дала возможно отображать кириллицу. вот и все! Всем спасибо!

vlad.v ( 2013-01-17 01:38:42 +0400 )редактировать
0

делайте через func_odbc или REALTIME. будет пара строчек вместо всего этого мусора и не надо следить за соединениями к базе.

http://www.voip-info.org/wiki/view/Asterisk+func+func_odbc

http://www.voip-info.org/wiki/view/Asterisk+RealTime

ссылка удалить спам редактировать

ответил 2013-01-16 18:49:09 +0400

meral Gravatar meral flag of Ukraine
21228 23 18 169
http://pro-sip.net/

Comments

Спасибо за совет, но хотелось для начала хоть в этом разобраться.

vlad.v ( 2013-01-16 20:29:26 +0400 )редактировать

так в том то и дело, что с func_odbc будет росто вызов функции. а тут екранирование скобочек в запросе,следить за базой,переодически теряются хендлы и так далее.

meral ( 2013-01-17 04:08:07 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2013-01-16 15:19:58 +0400

Просмотрен: 1,195 раз

Обновлен: Jan 16 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.