問題描述

我是 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。