php: uso de mysql_real_escape_string con PDO (sin conexión al servidor localhost)

Así que soy bastante paranoico y uso mysql_real_escape_string () con PDO. En realidad no uso declaraciones preparadas en PDO, así que tengo que desinfectar las entradas.

Cuando alojo en mi propio servidor, creé un usuario sin privilegios en la máquina local para que mysql_real_escape_string () no fallara y vaciara mi variable (¡heh, eso es desinfección!). Me doy cuenta de que esta es una solución bastante fallida, ya que si los db no tienen conjuntos de caracteres coincidentes, entonces no tiene sentido desinfectar, pero funcionó por el momento.

Ahora en mi nuevo host, no puedo crear un usuario sin contraseña y sin privilegios para la base de datos … y mysql_real_escape_string () falla porque no hay un servidor mysql en la máquina local. No puedo editar php.ini para establecer el nombre de host / usuario / pass para la base de datos predeterminada.

¿Que puedo hacer?

Mientras escribo esto, me pregunto si php permite cambios de tiempo de ejecución en la configuración … tal vez … hrm.
Editar: Hm … ini_set ()? : O

Mejor respuesta
Mezclar dos bibliotecas de bases de datos como esta es una mala idea y potencialmente insegura.

mysql_real_escape_string () necesita una conexión de base de datos mysql_connect () existente y clásica (de la que puede obtener información del juego de caracteres) para que sea totalmente segura. La conexión PDO estará separada, posiblemente con diferentes configuraciones de juego de caracteres, resultando finalmente en less security:

A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned. If link_identifier isn’t defined, the last MySQL connection is used.

Use PDO hasta el final, no hay alternativa.

Si no desea utilizar declaraciones preparadas, PDO::quote debería ser la función correcta:

Returns a quoted string that is theoretically safe to pass into an SQL statement.

Sin embargo, tenga en cuenta que incluso la página del manual para esa función recomienda el uso de declaraciones preparadas.

Por favor indique la dirección original:php: uso de mysql_real_escape_string con PDO (sin conexión al servidor localhost) - Código de registro