问题描述

我是 SQL 的新手,我想知道如果我需要使用 wpdb->prepare 对我创建的表进行以下查询

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

我需要使用 prepare 吗?我该怎么办?

干杯

最佳解决方案

最好的做法是始终使用 prepare,但主要用于防止 SQL 注入攻击,并且由于没有用户/访问者的输入或者不能影响查询,那么这不是您当前的示例中的问题。

但是就像我之前说过的最佳实践一样,使用它,一旦你开始使用它,你永远不会停止,所以在你的例子中,你可以这样使用它:

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

阅读更多关于如何使用它到 codex

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。