Je suis nouveau dans SQL et je me demande si je dois utiliser wpdb->prepare
pour la requête suivante 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 ça?
À votre santé
plugin-development
mysql
wpdb
Richard Sweeney
la source
la source
$tablename = $wpdb->prefix . "my_custom_table"; $concert_id = 1; $sql = "SELECT * FROM " . $tablename . " WHERE concert_id = %d LIMIT 1;"; $prep_sql = $wpdb->prepare( $sql, $concert_id ); $get_concerts = $wpdb->get_results( $prep_sql , ARRAY_A );
Et cela fonctionne très bien! Je ne sais pas pourquoi ce serait. Mais je comprends maintenant dans tous les cas!SELECT * FROM `wp_my_custom_table`
. Vous pouvez activer le support double devis, mais il faudrait alors ressembler à ceci:SELECT * FROM "wp_my_custom_table"
.Lorsque vous utilisez prepare, il protège le code des vulnérabilités d'injection SQL.
Voici le code que vous devez modifier pour l'utiliser
prepare()
;la source
Dans votre cas, il n'est pas possible d'attaquer par injection SQL . Votre code n'a pas besoin de protection supplémentaire car n'utilisez pas les entrées utilisateur telles que: publier, obtenir, demander, cookie.
N'utilisez pas de fonction compliquée lorsque vous n'êtes pas nécessaire pour économiser les ressources du serveur.
la source