Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DarkSoulSong

Erro com aspas em Query no PHP - MySQL

Recommended Posts

Olá, Senhoras e Senhores.

 

Estou fundindo (pra não dizer f****** mesmo) o Crânio há algumas horas com um problema idiótico:

 

Estou com as variáveis abaixo:

 

$sql = 'INSERT INTO tb_galleries(galName, category)' ;
$sql .= "VALUES ('{$galName}','{$category}')";
$sql .= "SELECT pk_galleries FROM tb_galleries WHERE galName = '{$galName}'";
$query = mysql_query($sql);

Ao dar um var_dump($query), recebo o seguinte:

 

boolean false

 

Resolvi, então, ver qual era o conteúdo a minha variável $sql. Deu o seguinte:

 

string 'INSERT INTO tb_galleries(galName, category)VALUES ('1235','albuns')SELECT pk_galleries FROM tb_galleries WHERE galName = '1235''

Se copiarmos esse código e colar no PHPMYADMIN (é o que eu uso pra gerenciar o bd =) ), dá erro de sintaxe! Mas se eu RETIRAR as aspas simples do começo e fim da Query, ela funciona que é uma beleza! =/

O engraçado é que tenho outras Queries no meu programa: faço do mesmo jeito e não tenho esse problema.

O objetivo? Preciso inserir esses valores na tabela e depois, pegar esse referencial do galName com o SELECT para inserí-lo em outra tabela (numa outra query), onde outras informações serão inseridas.

 

Me pergunto então se há alguma maneira de "limpar" as aspas que vão no código para o MySQL... Tem como fazer isso? Ou ainda, teria outro jeito de fazer essa parada funcionar? Será que estou fazendo algo de errado?

 

Seque o que eu já tentei:

- Colocar a query em aspas duplas;

- Colocar tudo numa mesma query;

- Colocar o nome das colunas em `` (como o PHPMYADMIN faz);

- ... E qualquer coisa tosca que me apareceu na cabeça.

 

Alguma idéia? Qualquer ajuda seria muito apreciada!!

 

VLW!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você esta usando aspas simples no meio da query, ele interpreta como fechamento da primeira e depois uma abertura.

 

verifique isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, obrigado pela ajuda. Tentei algumas coisas.

 

Como você esta usando aspas simples no meio da query, ele interpreta como fechamento da primeira e depois uma abertura.

 

verifique isso.

 

 

Então, troquei as aspas e coloquei aspas duplas nas extremidades. Quanto as aspas simples, arrumei-as e através do var_dump copiei o output e colei no phpmyadmin. Funcionaram normalmente. Então, quanto às aspas do meio, está ok... Agora, as aspas da extremidade, acredito que o PHP retire-as depois, ou que o var_dump coloque-as alí apenas para delimitar o valor da variável, e não que ele insira, efetivamente, as aspas na query no momento da consulta.

 

Escapa as aspas, ou troque as aspas da variavel de simples para duplas.

Padronize, que nunca terás problemas.

 

Segui o seu conselho e padronizei. É uma boa prática realmente. Mas mesmo assim, não fez diferença... Mesmo escapando-as.

 

Depois de fazer umas pesquisas, acho que o meu problema não é realmente com as aspas, já que, pelo que entendi, o PHP retira aquelas aspas mostradas pelo var_dump no momento da consulta. Talvez, o que esteja acontecendo é que ele esteja tentando fazer as duas consultas ao mesmo tempo (INSERT e SELECT) e por isso, só a primeira está sendo efetivada - digo isso pq fiz umas mudanças no meu código: ao invés de colocar o INSERT e o SELECT na mesma variável, resolvi fazer as coisas de uma maneira mais passo-a-passo: primeiro inseri... e depois, com outra variável, fiz a consulta.

Mas o diabo é que CONTINUA RETORNANDO NADA! Mas o Insert, que foi executado primeiro, funcionou! Olhei a tabela e o registro está lá.

 

Eis como ficou o código agora:

            $sql = "INSERT INTO tb_galleries(galName, category) " ;
            $sql .= "VALUES ('{$galName}', '{$category}')";
            //var_dump($sql); die('aqui');
            $query1 = mysql_query($sql);
                if (!$query1){
                   $mensagem = 'A inserção não pode ser realizada: '.mysql_error();
                }
	    //var_dump($query1); die('aqui');  ATÉ AQUI, FUNCIONA NORMALMENTE! E OS DADOS INSEREM, COMO ESPERADO.
            $sql2 = "SELECT pk_galleries FROM tb_galleries WHERE galName = '{$galName}'";
            //var_dump($sql2); die('aqui');
            $query2 = mysql_query(sql2);
            //var_dump($query2); die('aqui'); NÃO RETORNA NADA!

Então, imagino que tenha que dar uma espécie de "BREAK" entre as duas querys. Talves ele esteja tentando fazer isso ao mesmo tempo, sei lá. Digo isso pq uma vez, me disseram que seria bom colocar um comando entre queries para evitar que o mysql tentasse fazer tudo ao mesmo tempo.

 

Qual seria esse código? O que vocês acham que pode estar ocorrendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.