2015-11-01 97 views
1

我想要訪問由pod創建的表,這是一個名爲palyer排名的自定義表。這是一個頁面模板。即使數據選擇不返回行

林不知道我做的正確,因爲不管我做什麼它的印刷它不應該導致他們的圖標是一個條目爲玩家ID即時通訊尋找。

<?php 
$playerId='16-18-4500000'; 
    $myrows = $wpdb->get_results("SELECT * FROM 4hSIc_pods_player_ranking WHERE player_id='".$playerId."'"); 
$num_rows = mysql_num_rows($myrows); 
    if($num_rows) { 
     echo "$num_rows Rows\n"; 
    } 

    else 

     { 

echo "<li> <a href='#thanks' role='button' class='btn' data-toggle='modal'><i class='fa fa-hand-peace-o'></i>'".$playerId."</a></li>"; 
} 

?> 

我只想打印圖標,如果他們在系統中沒有掛起點。 enter image description here

回答

1

的幾個問題你的方法:

你不要逃避你的數據 - 在wpdb類有這樣做對你的方式,確保你使用它們。

下面是你的查詢將被改寫,以逃避player_id$wpdb->prepare()

$myrows = $wpdb->get_results($wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}pods_player_ranking 
    WHERE player_id=%s", $playerId)); 

的另一件事是,你試圖使用一個變量,它實際上是一個數組PHP的mysql*功能($wpdb->get_results()回報一個數組而不是一個mysql_result)。

另外,如果您只希望查詢得到一個結果,則可以使用$wpdb->get_row() - 因爲它將直接以您指定的格式返回該行。以下是如何將看起來像:

$row = $wpdb->get_row($wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}pods_player_ranking 
    WHERE player_id=%s", $playerId), OBJECT); 

get_row函數的第二個參數是這三個之一:

  • 對象 - 這個返回結果爲stdClass的實例 - 一個簡單對象
  • ARRAY_A - 這將返回結果作爲關聯數組(其列名是鍵)
  • ARRAY_N - 這將返回結果作爲數字索引數組。

我還將pods_player_ranking之前的文本替換爲{$wpdb->prefix},因爲我認爲這是您的表格前綴。使用wpdb的prefix屬性是一個好習慣,而不是對前綴進行硬編碼(如果您編寫的代碼將被多個站點使用,那麼當前綴不同時,您可能會遇到代碼無法工作的問題)。


,我會建議的最後一件事是使用調試(添加到您的wp-config.php文件:define('WP_DEBUG', true);)當你正在開發一個新的網站,或開發新的特性。有時候,這可能使其很難/無法瀏覽網站(如果該插件或主題代碼會產生大量的通知/錯誤信息),所以你可以使用此代碼來代替:只要添加

if (isset($_GET['debug'])) { 
    define('WP_DEBUG', true); 
} 

這樣?debug添加到當前URL,您將啓用顯示調試消息。

的一點是,如果你啓用調試過,你會最有可能看到這樣的錯誤:

Warning: mysql_num_rows() expects parameter 1 to be resource, array given in /path/to/file.php 
相關問題