Cara, o quer ta acontecendo é que o php está puxando a informação do request(post) como uma string(afinal, não tem como ele adivinhar que é um int, né? haha) tente adicionar um casting nessa linha:
$cod_demo = $_POST['cod_dem'];
Ficaria desse jeito:
$cod_demo = (int)$_POST['cod_dem'];
e TIRE as '' do insert:
INSERT INTO TAB_CAMPANHA (DATA_APRESENTACAO,HORA_APRESENTACAO,DATA_TERMINO,COD_INDICADOR,NOME_INDICADOR,COD_CLI,COD_DEM,COMPRA_EFETUADA)
VALUES ('$data','$hora','$data_term','$cod_indicador'
,'$nome_indicador','$cod_cli',$cod_demo,'$compra_efetuada'
)"
em vez de
INSERT INTO TAB_CAMPANHA (DATA_APRESENTACAO,HORA_APRESENTACAO,DATA_TERMINO,COD_INDICADOR,NOME_INDICADOR,COD_CLI,COD_DEM,COMPRA_EFETUADA)
VALUES ('$data','$hora','$data_term','$cod_indicador'
,'$nome_indicador','$cod_cli','$cod_demo','$compra_efetuada'
)"
OBS: Busque meios de evitar SQLInjection, isso é MUUUITO perigoso