sql >> Base de Datos >  >> RDS >> Mysql

No puedo usar mysql_real_escape_string

Primer punto:si recibe un error de mysql_real_escape_string() , es porque está llamando a la función antes de conectarse a la base de datos.

Parece que se conecta a la base de datos justo antes de ejecutar una consulta. Entonces, cualquier cosa que haga antes de llamar a su mm_mysqlquery() la función no tendrá conexión.

El mysql_real_escape_string() La función necesita una conexión en vivo a la base de datos, por lo que puede hacer el tipo correcto de escape con respecto al conjunto de caracteres de la conexión. Por lo tanto, debe conectarse antes te escapas.

Es mejor hacerlo de todos modos, porque si realiza varias consultas durante el curso de una sola solicitud de PHP, es menos complicado conectarse una vez y usa la misma conexión para todas tus consultas.

En segundo lugar, no acepte sugerencias para usar addslashes() -- no hace lo mismo que mysql_real_escape_string() . Los dos no son intercambiables. Debería adquirir el hábito de usar mysql_real_escape_string() .

Tercero, tu sani() función muestra un concepto erróneo común.

function sani($string){     
  $string = strip_tags($string); 
  $string = htmlspecialchars($string); 
  $string = trim(rtrim(ltrim($string))); 
  $string = mysql_real_escape_string($string);
  return $string;
}

La idea errónea común es que necesita todas estas funciones para hacer que una cadena sea segura en una instrucción SQL. tu no Solo mysql_real_escape_string() es necesario. Todas las demás funciones en este ejemplo no hacen nada para proteger contra la inyección SQL.

Esas funciones son útiles si genera una cadena en una presentación HTML y desea reducir el riesgo de ataques XSS, pero entonces mysql_real_escape_string() es irrelevante.

Use cada tipo de método de desinfección en su contexto apropiado.