Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível usar mysql_real_escape_string


Primeiro ponto:Se você está recebendo um erro de mysql_real_escape_string() , é porque você está chamando a função antes de se conectar ao banco de dados.

Parece que você se conecta ao banco de dados logo antes de executar uma consulta. Então, qualquer coisa que você faça antes de chamar seu mm_mysqlquery() função não terá uma conexão.

O mysql_real_escape_string() A função precisa de uma conexão ativa com o banco de dados, para que possa fazer o tipo certo de escape em relação ao conjunto de caracteres da conexão. Então você precisa se conectar antes você escapa.

É melhor fazer isso de qualquer maneira, porque se você fizer várias consultas durante o curso de uma única solicitação PHP, será menos sobrecarga conectar uma vez e use a mesma conexão para todas as suas consultas.

Segundo, não aceite sugestões para usar addslashes() -- não faz a mesma coisa que mysql_real_escape_string() . Os dois não são intercambiáveis. Você deve adquirir o hábito de usar mysql_real_escape_string() .

Terceiro, seu sani() função mostra um equívoco comum.
function sani($string){     
  $string = strip_tags($string); 
  $string = htmlspecialchars($string); 
  $string = trim(rtrim(ltrim($string))); 
  $string = mysql_real_escape_string($string);
  return $string;
}

O equívoco comum é que você precisa de todas essas funções para tornar uma string segura em uma instrução SQL. Você não. Apenas mysql_real_escape_string() é necessário. Todas as outras funções neste exemplo não fazem nada para proteger contra injeção de SQL.

Essas funções são úteis se você produzir uma string em uma apresentação HTML e quiser reduzir o risco de ataques XSS, mas então mysql_real_escape_string() é irrelevante.

Use cada tipo de método de higienização em seu contexto apropriado.