Devo usar wpdb prepare?

23

Sou novo no SQL e estou querendo saber se preciso usar wpdb->prepare para a consulta a seguir em uma tabela que criei

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

Preciso usar prepare aqui? Como eu faria isso?

Felicidades

    
por Richard Sweeney 11.05.2011 / 09:16
fonte

3 respostas

27

A melhor prática é sempre usar prepare , mas o principal uso é evitar ataques de injeção de SQL e, como não há entrada dos usuários / visitantes ou eles não podem efetuar a consulta, isso não é um problema. problema no seu exemplo atual.

Mas, como eu disse antes, é prática recomendada usá-lo e, uma vez que você comece a usá-lo, você nunca para, então, no seu exemplo, você pode usá-lo assim:

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 ler mais sobre como usá-lo para o códice

    
por Bainternet 11.05.2011 / 09:43
fonte
0

Quando você usa prepare, está protegendo o código das vulnerabilidades de injeção SQL.

Aqui está o código que você precisa 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 );
    
por softnwords 12.10.2015 / 17:34
fonte
-1

No seu caso, não é possível ataque de injeção de SQL . Seu código não precisa de proteção adicional porque não usa entradas do usuário como: post, get, request, cookie.

Não use funções complicadas quando não for necessário salvar recursos do servidor.

    
por SaschArt 17.07.2015 / 10:51
fonte