¿Debo usar wpdb prepare?

23

Soy nuevo en SQL y me pregunto si necesito usar wpdb->prepare para la siguiente consulta en una tabla que he creado

global $wpdb;
$tablename = $wpdb->prefix . "my_custom_table";
$sql = "SELECT * FROM " . $tablename . " ORDER BY date_created DESC";
$resulst = $wpdb->get_results( $sql , ARRAY_A );

¿Necesito usar prepare aquí? ¿Cómo haría eso?

Saludos

    
pregunta Richard Sweeney 11.05.2011 - 09:16

3 respuestas

27

Es una buena práctica usar siempre prepare , pero su uso principal es prevenir ataques de inyección SQL, y como no hay ninguna entrada de los usuarios / visitantes o no pueden efectuar la consulta, eso no es un problema. problema en su ejemplo actual.

Pero como dije antes, es una buena práctica usarlo y una vez que empiezas a usarlo, nunca lo dejas, así que en tu ejemplo puedes usarlo así:

global $wpdb;
$tablename = $wpdb->prefix . "my_custom_table";
$sql = $wpdb->prepare( "SELECT * FROM %s ORDER BY date_created DESC",$tablename );
$results = $wpdb->get_results( $sql , ARRAY_A );

para leer más sobre cómo usarlo, diríjase a the codex

    
respondido por el Bainternet 11.05.2011 - 09:43
0

Cuando usa Preparar, está protegiendo el código de las vulnerabilidades de inyección de SQL.

Aquí está el código que necesita modificar para usar prepare() ;

global $wpdb;
$tablename = $wpdb->prefix . "my_custom_table";
$sql = $wpdb->prepare( "SELECT * FROM {$tablename} ORDER BY date_created DESC");
$resulst = $wpdb->get_results( $sql , ARRAY_A );
    
respondido por el softnwords 12.10.2015 - 17:34
-1

En su caso no es posible ataque de inyección SQL . Su código no necesita protección adicional porque no utiliza la información del usuario como: publicar, obtener, solicitar, cookie.

No utilice una función complicada cuando no sea necesario para ahorrar recursos del servidor.

    
respondido por el SaschArt 17.07.2015 - 10:51

Lea otras preguntas en las etiquetas