2016-10-10 59 views
0

我的問題是,添加新的插件到我的WordPress的CMS,我的網站以及WordPress的CMS後顯示PHP錯誤:WordPress網站提供以下錯誤:缺少wpdb :: prepare()的參數2。兌換?

Warning: Missing argument 2 for wpdb::prepare(), called in /home/a4921378/public_html/wp-content/themes/xscholar/framework/includes/core-functions.php on line 433 and defined in /home/a4921378/public_html/wp-includes/wp-db.php on line 1285

圖片:

Error Image

有人可以告訴我什麼是錯的,如果有人轉換/修復這段代碼,我會非常感激。

我: 我是一個業餘的編碼器,只有瞭解的基礎知識,並沒有學到PHP然而,我使用WordPress經常,但這樣的事情過去一直沒上。我一直在試圖弄清楚什麼是錯誤的,但在2個小時內沒有成功。

我已經訪問過的網頁php-warning-missing-argument-2-for-wpdb-preparemissing-argument-2-for-wpdbprepare

$terms = $wpdb->get_results($wpdb->prepare('SELECT name, slug FROM ' . $wpdb->prefix . 'terms, ' . $wpdb->prefix . 'term_taxonomy WHERE ' . $wpdb->prefix . 'terms.term_id = ' . $wpdb->prefix . 'term_taxonomy.term_id AND taxonomy = "product_cat" ORDER BY name ASC;')); 
$wpdb->get_var($wpdb->prepare("SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url)); 
+0

你不應該自己處理這個問題 - 聯繫插件的作者或者找一個不同的插件來做同樣的事情。當你不理解它時,你不想讓自己處於一個插件更改的情況。 – Synchro

回答

0

您不必使用$wpdb->prepare你的第一個查詢,因爲查詢沒有任何佔位符(What a placeholder is?)。只需簡單地使用:

$terms = $wpdb->get_results('SELECT name, slug FROM ' . $wpdb->prefix . 'terms, ' . $wpdb->prefix . 'term_taxonomy WHERE ' . $wpdb->prefix . 'terms.term_id = ' . $wpdb->prefix . 'term_taxonomy.term_id AND taxonomy = "product_cat" ORDER BY name ASC;'); 

你的第二個查詢有一個佔位符(即%s),但它被包裹在引號。它不應該被包裹,prepare方法照顧它。只需使用:

$wpdb->get_var($wpdb->prepare("SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = %s AND wposts.post_type = 'attachment'", $attachment_url)); 
+0

非常感謝您的幫助。其實,這段代碼是由主題的開發者編寫的,我不知道php。 –

+0

如果我複製了原樣糾正的代碼並將其粘貼到原始位置,它是否可以毫無錯誤地完成工作? –

+0

我沒有測試它,你將不得不嘗試它:)最有可能它會工作。 –