Dois-je utiliser wpdb prepare?

23

Je ne connais pas SQL et je me demande si je dois utiliser wpdb->prepare pour la requête suivante sur une table que j'ai créée

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

Dois-je utiliser prepare ici? Comment ferais-je cela?

Cheers

    
posée Richard Sweeney 11.05.2011 - 09:16

3 réponses

27

Il est recommandé de toujours utiliser prepare , mais son utilisation principale est de prévenir les attaques par injection SQL. En l'absence de saisie de la part des utilisateurs / visiteurs ou s'ils ne peuvent pas effectuer la requête, il ne s'agit pas d'une problème dans votre exemple actuel.

Mais comme je l'ai déjà dit, il est préférable de l'utiliser et une fois que vous commencez à l'utiliser, vous ne vous arrêtez jamais. Dans votre exemple, vous pouvez l'utiliser comme suit:

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 );

pour en savoir plus sur son utilisation, rendez-vous sur le codex

    
réponse donnée Bainternet 11.05.2011 - 09:43
0

Lorsque vous utilisez prepare, il protège le code des vulnérabilités d'injection SQL.

Voici le code que vous devez modifier pour utiliser 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 );
    
réponse donnée softnwords 12.10.2015 - 17:34
-1

Dans votre cas, il est impossible attaque par injection SQL . Votre code n'a pas besoin de protection supplémentaire car n'utilisez pas les entrées de l'utilisateur telles que: post, get, request, cookie.

N'utilisez pas de fonction compliquée lorsqu'il n'est pas nécessaire d'économiser les ressources du serveur.

    
réponse donnée SaschArt 17.07.2015 - 10:51

Lire d'autres questions sur les étiquettes