• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fil79

erro mysql

18 mensagens neste tópico

Boas

ao fazer um select a uma tabela dá-me erro se usar o '\'.

Agradeço qq ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

\ é um caracter especial.

Porque raio queres usar \ numa query?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não compreendo o teu problema...

Por favor explica em concreto o que se passa, de preferência ilustrando com um exemplo.

Quanto ao str-replace, a função funciona bem, mas como te disse, \ é um caracter especial e se o queres substituir deves procurar por \\ e não apenas por \.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deve-se evitar utilizar, caracteres especiais. E se não os queres utilizar, não uses.

Vocês complicam imenso o que é simples!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deve-se evitar utilizar, caracteres especiais. E se não os queres utilizar, não uses.

Vocês complicam imenso o que é simples!

se uma aplicação que é para um cliente rebenta ao usar esse caracter queres que lhe diga:"paciência, também não precisa desse carcter para nada!!"

enfim eu é que não consigo perceber a tua complicação!

Obrigado M6, str-replace com \\ funciona.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fil79, creio que estás com problemas de SQL Injection.

Já experimentaste usar uma ' no meio de um campo de texto? Vais obter também um erro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para sql injection não há problema, passo os valores com a função addslashes...talvez fosse indicado usar a função mysql_real_escape_string()...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fil79 se lá está a aparecer isso, é porque ou não estavas a tratar o input de utilizadores como deve ser, ou estavas a meter lá tu. De qualquer das formas a culpa é tua.

Não estou a ser simpático, mas é realidade.

Relembro e aviso quem não souber que nunca o input dos utilizadores pode ser directo!!!

talvez fosse indicado usar a função mysql_real_escape_string()...

O addslash faz o escape de algumas coisas, mas não faz de tudo.

Já verificaste as strings depois de as teres "escapado"?

Já verificaste os encodings?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

estava a tratar do input mas estava a usar somente a função addslashes, que revelou-se insuficiente, com a função

mysql_real_escape_string() ficou Ok.

De qualquer modo no primeiro Post respondeste somente um sintético "não o uses", daí a minha resposta

Obrigado a todos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não gosto de usar funções que dependam da plataforma... Isso aumenta o trabalho de portabilidadde do código. Se fosse a ti investia mais tempo a procurar uma solução menos dependente do mysql.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não gosto de usar funções que dependam da plataforma... Isso aumenta o trabalho de portabilidadde do código. Se fosse a ti investia mais tempo a procurar uma solução menos dependente do mysql.

Eu só faria isso se a aplicação tivesse de trabalhar noutra plataforma onde essas funções não estejam disponíveis, caso contrário é uma perca de tempo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função em causa só está disponível em mysql... Para outras plataformas a função tem um nome diferente e em outras nem há...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A função em causa só está disponível em mysql... Para outras plataformas a função tem um nome diferente e em outras nem há...

Ou seja, desde que use MySQL como backend para os dados não há problema certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ou seja, desde que use MySQL como backend para os dados não há problema certo?

Pelo menos se eles não mudarem isso na API ;P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo menos se eles não mudarem isso na API ;P

Como disse atrás, então não faz sentido estar a preocupar-me com isso.

Se desenho uma aplicação para trabalhar com MySQL e não tenho qualquer intenção de a colocar a funcionar com PostGres ou Oracle não faz qualquer sentido perder tempo a fazer desenvolvimento genérico, que tipicamente é até mais ineficiente do que as APIs específicas de cada BD.

Mais, se a API mudar e deixar de ser compatível (que lembro que muitas vezes mudam mas são retro-compatíveis) ou não se faz upgrade da plataforma para essa aplicação ou então a aplicação evolui de acordo com a evolução da plataforma.

Acontece que isto é um se muito grande, dado que a probabilidade de acontecer é baixíssima.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Como disse atrás, então não faz sentido estar a preocupar-me com isso.

Se desenho uma aplicação para trabalhar com MySQL e não tenho qualquer intenção de a colocar a funcionar com PostGres ou Oracle não faz qualquer sentido perder tempo a fazer desenvolvimento genérico, que tipicamente é até mais ineficiente do que as APIs específicas de cada BD.

Estás a fazer suposições pessoais a respeito das intenções de outro, sendo que desconheces as premissas dele. Ou seja, estás a inventar.

Posso estar a fazer algo para necessidades e requisitos actuais, mas isso não impede que se pense para o Futuro, as necessidades do Futuro podem mudar. É uma boa prática! E há formas de implementar essa boa prática, com um bom design, que separe o código de forma a que no Futuro essas mudanças sejam significativamente mais simples, não é algo complicado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a fazer suposições pessoais a respeito das intenções de outro, sendo que desconheces as premissas dele. Ou seja, estás a inventar.

Errado.

Eu não fiz qualquer suposição nem inventei.

O que eu fiz, foi provar que optar por um utilizar código genérico quando tal não é necessário é uma má escolha.

Coloquei isso de forma bem explicita.

Posso estar a fazer algo para necessidades e requisitos actuais, mas isso não impede que se pense para o Futuro, as necessidades do Futuro podem mudar. É uma boa prática! E há formas de implementar essa boa prática, com um bom design, que separe o código de forma a que no Futuro essas mudanças sejam significativamente mais simples, não é algo complicado.

Correcto.

A isso chama-se desenho e arquitectura e é totalmente agnóstico ao código em si.

O caso que referiste centra-se especificamente no código e foi aí que eu rebati e volto a repetir:

Não havendo qualquer indicação de que o sistema terá de correr noutras plataformas, não há qualquer razão para não se recorrer a APIs especificas, pois fazê-lo mostra falta de foco, bom senso e pragmatismo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora