web-dev-qa-db-fra.com

Devrais-je utiliser wpdb prepare?

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é

23
Richard Sweeney

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

27
Bainternet

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