Я хочу использовать класс wpdb
на моей внешней странице, не связанной с wordpress.
Я попытался включить следующее в файл php:
// include wordpress functions include( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); require_wp_db(); global $wpdb;
Теперь я сделал запрос, используя $wpdb->query
$product_info_query = $wpdb->query("select p.products_id, p.products_type, p.img_display, p.products_sku, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_last_modified, p.products_date_available, p.manufacturers_id, gp.likes from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_GLOBAL_PRODUCTS . " gp where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and gp.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'"); $product_info = mysql_fetch_array($product_info_query);
Однако он не работает. Он возвратил предупреждение:
Warning: mysql_fetch_array() expects parameter 1 to be resource
В чем проблема? Как исправить это и, вероятно, правильно использовать класс wpdb
при выполнении запросов вне wordpress?
Вы не можете смешивать wpdb
с mysql_fetch_array
. Они несовместимы. Вам нужно использовать методы wpdb
, а также функции PHP, такие как while
, foreach
и for
. wpdb
не возвращает ссылки, которые используют функции mysql PHP. Он возвращает объект и массив, а иногда строку.
В вашем случае, тем не менее, часть базы данных выполнена. Вы просто хотите просмотреть результат.
foreach ($products as $op) { // do stuff }