Resultado de uma query mysql em variavel com array? [RESOLVIDO]

1. Resultado de uma query mysql em variavel com array? [RESOLVIDO]

Julio Cesar Campos
juliomortandela

(usa Linux Mint)

Enviado em 03/10/2014 - 09:43h

Salve pessoal,

seguinte, estou montando um shell script que gera um conteúdo em php/html para uma página.

O que rola, é que executo uma query no mysql e armazeno o resultado em uma variável, mas não sei como tratar esta variável para ela exibir os dados como em um array do php.

Abaixo o exemplo do que estou tentando fazer:

# VALOR=`mysql crmlite -u root -pcampos -se \"select nome_cont,contato_cont from contato where numero_a_cont =\'1131812037\' order by id desc limit 2\"`

Beleza, o comando roda e eu obtenho os valores, agora se eu dou um echo na variável:

# echo $valor
Julio Cesar Campos ACOMIP Telecom e Solucoes IP Gabriel Barros ACOMIP Telecom e Solucoes IP

Quando na verdade os valores seriam:

| Julio Cesar Campos | ACOMIP Telecom e Solucoes IP |
| Gabriel Barros | ACOMIP Telecom e Solucoes IP |

Os \"pipes\" foram só para ilustrar os campos e valores.

Como eu faço para obter por exemplo o valor \"Julio Cesar Campos\" e o valor \"ACOMIP Telecom e Solucoes IP\" em outras duas variáveis distintas???

Já tentei com ${valor[0]} entre outras mas não obtive sucesso.


Alguma luz???


Desde já, muito obrigado!!!!!




Julio Cesar Campos


  


2. MELHOR RESPOSTA

cr0n
_di0

(usa FreeBSD)

Enviado em 06/10/2014 - 22:00h

O valor retornado está totalmente atribuído em uma única variável. O que vem em mente seria o auxílio de awk e sed, talvez não seja o melhor, mas algo como:




nome() {
nome=$(echo "$1" | awk -F "\t" '{print $1}' | sed -n $2{p})
}

contato() {
contato=$(echo "$1" | awk -F "\t" {'print $2}' | sed -n $2{p})
}

mysql=/usr/bin/mysql

row=`mysql crmlite -u root -pcampos -se \"select nome_cont,contato_cont from contato where numero_a_cont =\'1131812037\' order by id desc limit 2\"`

nome "$row" 1
echo $nome # Julio Cesar Campos

contato "$row" 1
echo $contato # ACOMIP Telecom e Solucoes IP

#___________________

nome "$row" 2
echo $nome # Gabriel Barros

contato "$row" 2
echo $contato # ACOMIP Telecom e Solucoes IP



Porém, creio eu que você esteja usando tesouras para cortar laranjas, para esse caso seria mais indicado usar Perl, Python ou PHP ao invés de SS.

3. Re: Resultado de uma query mysql em variavel com array? [RESOLVIDO]

luiz
luizsouza99

(usa Linux Mint)

Enviado em 06/10/2014 - 00:06h

Para ter como ajudar seria bom saber como é a estrutura de dados que você está tratando. Por exemplo, o nome da empresa será sempre este ? (se for pode ser resolvido facilmente)

pelo pouco que entendi o ideal é você dar o comando para exibir apenas os nomes e jogar o resultado num arquivo texto e depois fazer a mesma coisa com os outros dados, depois é só jogar em colunas.

Se o seu objetivo é apenas jogar um valor na tela, acredito eu que basta dar o comando do sql pegando apenas o nome e depois com outra variavel você dá o comando pegando outro dado:

VALOR1=`mysql crmlite -u root -pcampos -se \"select nome_cont, from contato where numero_a_cont =\'1131812037\' order by id desc limit 2\"`

VALOR2=`mysql crmlite -u root -pcampos -se \"select contato_cont from contato where numero_a_cont =\'1131812037\' order by id desc limit 2\"`

echo $VALOR1 $VALOR2

eu não entendo de sql foi o que deu para fazer, ilustra melhor o seu problema, tenho certeza que vai aparecer várias soluções



4. Re: Resultado de uma query mysql em variavel com array? [RESOLVIDO]

Julio Cesar Campos
juliomortandela

(usa Linux Mint)

Enviado em 06/10/2014 - 22:31h

De antemão, quero agradecer a todas as ideias que me foram passadas.

Resolvi o problema gerando um arquivo com os dados e tratando o arquivo com os comandos sed e cut.

Segue abaixo como procedi:


# Consulta mysql sobre o nome da empresa e pessoa de contato com base no numero de a

# Gera o arquivo com o nome obtido atraves das variaves $DESTINO e $ORIGEM e acrescenta a extensão .txt
ARQUIVO_SQL=$DESTINO-$ORIGEM.txt

# Gera os valores a serem atribuidos com a query sql, com o comando sed substitui os "tabs" por ";" e armazena no arquivo como o nome especificado na variável $ARQUIVO_SQL
SQL1=`mysql crmlite -u root -psenha -e "select nome_cont,contato_cont,fone_cont,email_cont from contato where numero_a_cont ='$ORIGEM' order by id desc limit 1"|sed 's/\t/;/g' > $ARQUIVO_SQL`

# Separa os valores obtidos com os comandos cat e cut em conjunto e armazena nas suas respectivas variáveis
NOME=`cat $ARQUIVO_SQL|tail -1 |cut -d ";" -f1`
CONTATO=`cat $ARQUIVO_SQL|tail -1 |cut -d ";" -f2`
FONE=`cat $ARQUIVO_SQL|tail -1 |cut -d ";" -f3`
EMAIL=`cat $ARQUIVO_SQL|tail -1 |cut -d ";" -f4`




Desde já, muito obrigado pelo apoio de todos!


Valeu!!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts