PauloPHP 0 Denunciar post Postado Outubro 15, 2009 Boa tarde, pessoal. Estou com um problema e gostaria de saber se alguem de vocês ja passou por essa situação. Tenho um Software que faz alterações no banco e grava LOG de tudo. Quando da erro eu recupero o codigo do erro e o que é, pela funcao: printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao)); Estou inserindo no banco: sprintf(strQuery,"insert into tbTeste(campo1,capo2) values ('%s','%s')",campo1,campo2); Problema: O erro retornado pelo mysql_error(&conexao)), vem as vezes com alguma parte da string destacada por ' '. Ex: error found 'banco.tabela' o que acontece: Esses ' ' atrapalham na hora de executar o comando mysql. Retorna o seguinte erro de sintaxe: Erro 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'bancoteste.tabela' doesn't exist')' at line 1 O ideal seria retirar esses ' ' da string e de erro e gravar. Alguem conhece alguma outra forma de se gravar essa string? Fico no aguardo. Obrigado pessoal. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 15, 2009 http://forums.mysql.com/read.php?47,129594,129771 Mas aspas simples não dão problemas em C dentro de aspas duplas. Compartilhar este post Link para o post Compartilhar em outros sites
PauloPHP 0 Denunciar post Postado Outubro 19, 2009 Então não tem como eu formatar a string para adicionar ao banco pois vai acusar erro de sintaxe no INSERT do mysql. Eu vou ter que percorrer a string e tirar esses ´´´. Me passaram uma funcao do Mysql que achei muito interessante. mysql_real_escape_string Vou testar! Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel... 0 Denunciar post Postado Outubro 22, 2009 Caríssimo, Eu fiz aqui um rascunho mais ou menos do que você falou. Ele retira as aspas simples da string... Veja: #include <cstdlib> #include <iostream> #include <string.h> using namespace std; char *retira_aspas(char *string); int main(int argc, char *argv[]) { char string[] = ">> 'Linux the' best'.."; printf("%s\n",string); printf("%s\n",retira_aspas(string)); system("PAUSE"); return EXIT_SUCCESS; } char *retira_aspas(char *string) { int i; int tam_new_string=0; char *new_string; new_string=(char *)malloc(0); for(i=0;i<strlen(string);i++) { if((int)string[i]!=39) // Se for diferente de aspas ASCII da aspa simples = 39 { tam_new_string++; // Incrementa o tamanho da nova string new_string=(char *)realloc(new_string,tam_new_string*(sizeof(char))); // Realoca um novo espaco pra nova string new_string[tam_new_string-1]=string[i]; // Insere o dado nesse novo espaco } } tam_new_string++; // Incrementa o tamanho da nova string new_string=(char *)realloc(new_string,tam_new_string*(sizeof(char))); // Realoca um novo espaco pra nova string new_string[tam_new_string-1]='\0'; // Coloca o '\0' na string pra indicar o final da string return new_string; } Compartilhar este post Link para o post Compartilhar em outros sites