8
Okt

Meerdere records ophalen uit MySQL-DB in dialplan

Bij het queriën van een MySQL-databank heb je niet altijd slechts 1 resultaat.

In PhP kun je gebruiken maken van het while()-statement om over de resutaten te itereren. In deze post toon ik je hoe je ook in je Asterisk dialplan kunt itereren over meerdere resultaten van je MySQL-query.

 

Opvolgen:


De tip bestaat er hem in om terug te keren naar het 'resultid' en te kijken of er nog een resultaat bestaat. Asterisk verhoogt automatisch het resultid. Dit is een voorbeeld :

exten => s,1,MYSQL(Connect connid localhost gebruikersnaam paswoord DBnaam)
exten => s,2,MYSQL(Query resultid ${connid} SELECT klantnr FROM tbl_accounts WHERE actief=1)
exten => s,3,MYSQL(Fetch fetchid ${resultid} KLANTNR)

exten => s,4,GotoIf($["${fetchid}" = "1"]?5:8)
exten => s,5,NoOp(Resultaat !! klantnummer = ${KLANTNR})

exten => s,6,DoeIetsHier...
exten => s,7,GoTo(3) ; nog een record ophalen
exten => s,8,NoOp(record niet beschikbaar)
exten => s,9,DoeIetsAndersHier...
exten => s,10,MYSQL(Clear ${resultid})
exten => s,11,MYSQL(Disconnect ${connid})

 

In lijn 7 gaan we opnieuw naar het ${resultid} (prioriteit 3). In de daaropvolgende lijn (prioriteit 4) controleren we of ${fetchid} gelijk is aan de waarde "1". Een waarde "0" betekent dat er geen bestaande record meer werd gevonden.

 


free b2evolution skin