Je suis nouveau sur 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 je ferais ça?
À votre santé
Il est recommandé de toujours utiliser prepare
, mais son utilisation principale est de prévenir les attaques par injection SQL. Comme il n'y a aucune entrée des utilisateurs/visiteurs ou qu'ils ne peuvent pas effectuer la requête, cela ne pose pas de problème dans votre exemple actuel .
Mais comme je l'ai déjà dit, il est recommandé 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, allez à le codex
Lorsque vous utilisez prepare, cela 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 );