Mariano Rick
Tengo un sistema WordPress ejecutándose en PHP 7.0.11 usando WordPress. Un complemento que quiero usar no funciona y la verificación de los registros da como resultado
Error fatal de PHP: error no detectado: llamada a la función no definida mysql_real_escape_string() en…
Buscando este mensaje de error he encontrado que el mysql_real_escape_string()
la extensión quedó en desuso.
¿Cómo puedo convertir esta declaración para que funcione en PHP 7 y superior?
$ids = mysql_real_escape_string( $ids );
$result = $wpdb->query( "DELETE FROM $table_name WHERE id IN( $ids )" );
He encontrado esto en los documentos de WordPress: wpdb::_real_escape()
barot viral
puedes usar la función nativa de wordpress
wpdb::_real_escape( string $string )
o
$query = $wpdb->prepare(
"SELECT post_title from $wpdb->posts
WHERE post_title LIKE %s",
"%" . $myTitle . "%"
);
-
Gracias, pero ya he encontrado esto en la documentación. Tengo problemas para aplicarlo. ¿Podrías aplicarlo a mi código? (Lo es
wpdb::
o solo_real_escape
oreal_escape
ya que no estoy familiarizado con el uso de php)– Marian Rick
19 oct 2016 a las 8:00
-
puede usar prepare() si quiere algo como esto $consulta = $wpdb->prepare( “SELECCIONE post_title from $wpdb->posts DONDE post_title LIKE %s”, “%” . $myTitle . “%” );
– barot viral
19 oct 2016 a las 8:05
-
Entonces, ¿la solución es usar un complemento no compatible y cambiar todas las funciones con declaraciones preparadas? Use este complemento bajo su propio riesgo.
– Debflav
19 de octubre de 2016 a las 8:13
-
la solución real es encontrar y reemplazar todo mysql_real_escape_string con esc_sql desde su complemento
– barot viral
19 oct 2016 a las 8:20
-
@viralbarot ¡Muchas gracias! Solucionado mi problema
– Marca
6 de julio de 2017 a las 17:03
obtener una versión actualizada del complemento? El código parece vulnerable a la inyección de sql
– Profesor Abronsius
19 de octubre de 2016 a las 7:48
¿Puedo usar un
mysqli
extensión en WordPress, ya que está usandowpdb
? RamRaider el complemento es bastante simple y ya no está desarrollado.– Marian Rick
19 oct 2016 a las 7:50
Como dijo @RamRaider, debe actualizar o usar otro complemento. No es realmente seguro no usar
mysqli_*
oPDO
. De todos modos, este complemento parece no ser compatible con PHP 7– Debflav
19 de octubre de 2016 a las 7:54
He encontrado esto en los documentos de wp. ¿Es esta una “solución alternativa” de WordPress para reemplazar
mysql_real_escape_string
conreal_escape
? desarrollador.wordpress.org/reference/classes/wpdb/_real_escape– Marian Rick
19 de octubre de 2016 a las 7:55
No estoy familiarizado con WordPress pero parece que esta función está usando
mysql_real_escape_string
omysqli_real_escape_string
siguiendo sus controladores actuales.– Debflav
19 de octubre de 2016 a las 7:58