2013-04-08 138 views
1

在wordpress中,我正在查詢我手動添加的自定義行和列的默認表。我正在全球化$wpdb(Wordpress數據庫功能),它適用於一半的代碼。WordPress的 - WPDB查詢

例如腳本的第一部分是像這樣(只顯示代碼的相關部分):

class Test { 

    public function getP($param){ 

    global $wpdb; 
    $q = $wpdb->get_results("SELECT * FROM tbl WHERE " . $param['1']." = '" . $param['2'] . "'"); 
    } 
    } 

這樣的查詢通過$wpdb運行時的工作,我能打印得到的結果回。

但是,進一步下來,然後我需要運行另一個基於結果的查詢,所以而不是$wpdb->get_results我需要使用$wpdb->query

實施例(再次,只有初步認識):

global $wpdb; 

    $stmt = $this->wpdb->query($q); 

    if($param['type'] == 'x'){ 

    $data = $stmt->fetchAll(); 

    }else{ 

$data = $stmt->fetch(); 

    } 

return $data; 

即不工作,這一翻譯它似乎是屬於所述對象的外部,並提供下列錯誤:

Fatal error: Call to a member function query() on a non-object 

任何瞭解如爲什麼最初的查詢有效,但第二次查詢會導致錯誤,即使數據庫連接正常工作並且位於對象內部?

回答

2

從文檔:

The function returns an integer corresponding to the number of rows affected/selected. If there is a MySQL error, the function will return FALSE.

here

$wpdb->query()方法不返回的結果,則返回實現的行數。例如,如果您想要使用$wpdb->get_results()的結果,但可能其中一種方法更符合您的需求。

這就是爲什麼你得到FatalError,因爲整數不是一個對象。

看看here$wpdb參考那裏每個方法都很好地解釋。

祝你好運!

+0

感謝Philipp的回覆。我會再讀一遍,看看會發生什麼。 – JPDP 2013-04-10 03:49:13

0

在您的示例中,您試圖針對stdClass array()或結果而不是SQL查詢運行$wpdb->query

$wpdb->get_results將返回一行對象/數組,而不是另一個可查詢的SQL語句,就像您希望的那樣。您最終可以編寫一個控制循環來生成新的SQL語句。

相關問題