leooizepi 1 Denunciar post Postado Maio 13, 2010 bom dia galera! pessoal tenho a seguinte string: $sql = "SELECT CAMPO1, CAMPO2, CAMPO3 FROM tabela WHERE CAMPO4 = 'blabla'"; eu queria pegar o texto entre SELECT e FROM, ficando apenas: CAMPO1, CAMPO2, CAMPO3 como faço isso? valeu!! abraço! Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Maio 13, 2010 Utilize a seguinte regra: (?<=SELECT ).*(?= FROM)Lembrando que só vai funfar se o SELECT estiver em caixa alta... faça suas modificações para pegar do seu jeito... ou... coloca a expressão em modo de Ignore Case Sensitive (i) Compartilhar este post Link para o post Compartilhar em outros sites
leooizepi 1 Denunciar post Postado Maio 13, 2010 deu certo lucas, fiz assim: $sql = "SELECT CAMPO1, CAMPO2, CAMPO3 FROM tabela WHERE CAMPO4 = 'blabla'"; preg_match("/(?<=SELECT ).*(?= FROM)/i", $sql, $matches); mais agora aparecer um outro problema, esse acho que é complicado. é assim, eu preciso pegar os campos da minha consulta, no caso eu já consegui com a solução postado aqui. O retorno da minha solução vai vim separados por virgula, aí eu consigo dividir minha string dando um explode(',',$string), só que por exemplo, há um campo formatado assim: date_format(DATA,'%d/%m/Y') Se eu der o explode por virgula, ele vai dividir meu date_format, desconfigurando meus campos, como que faço para dividir meus campos agora? valeu.. abraço!! ae galera, encontrei o que eu queria, existe uma função em php que traz pra mim os nomes das colunas da SQL: $fields = array(); $sql_result = mysql_query($sql) or die ('Erro'); $num = mysql_num_fields($sql_result); for($i=0; $i<$num; $i++) { $fields[] = mysql_field_name($sql_result, $i); } valeu pela força...!! flw! Compartilhar este post Link para o post Compartilhar em outros sites