Есть рабочий sql-запрос … пытается настроить его на использование $ wpdb

Поэтому у меня есть этот код, который запрашивает настраиваемую таблицу с плагинами в базе данных wp. Он работает отлично, как есть. Но я пытаюсь настроить его на использование $ wpdb вместо функции $ con, которую я создал.

Вот код, который работает отлично, но не используя $ wpdb:

<?php $q = strtolower($_GET["q"]); if (!$q) return; $isArabic = is_arabic($q); $con=mysql_connect("localhost","admin","*****"); if($con){ mysql_select_db("arabic_student",$con); } else{ die("Could not connect to database"); } mysql_query("SET NAMES utf8"); $sql = "SELECT DISTINCT en_word, ar_word FROM wp_enar_words WHERE en_word LIKE '$q%' OR ar_word LIKE '$q%'"; $rsd = mysql_query($sql) or die(mysql_error()); if($isArabic){ while($rs = mysql_fetch_array($rsd)) { $en_word = $rs['en_word']; $ar_word = $rs['ar_word']; echo "$ar_word\n"; } }else{ while($rs = mysql_fetch_array($rsd)) { $en_word = $rs['en_word']; $ar_word = $rs['ar_word']; echo "$en_word\n"; } } ?> 

Вот моя попытка noob использовать $ wpdb:

 global $wpdb; $sql = $wpdb->get_results("SELECT en_word, ar_word FROM wp_enar_words WHERE en_word LIKE '$q%' OR ar_word LIKE '$q%'"); $rsd = $wpdb->query('$sql'); 

Но это приводит к фатальной ошибке: вызовите функцию-член get_results () на не-объект в … Так что, возможно, отсутствует что-то очевидное, но надеюсь, что я смогу получить некоторые рекомендации о том, как переносить мой существующий код на использование $ wpdb.

Заранее спасибо!


UPDATE: поэтому я начинаю думать, что проблема в том, что этот код вызывается с помощью jQuery-плагина. Я использую автозаполнение jquery и вызывая указанный выше PHP-код для заполнения формы автозаполнения формы:

 $("#search_words").autocomplete("<?php bloginfo('template_directory'); ?>/search_ac.php", {}); 

Это может быть проблема? Я запутался, потому что мой оригинальный код, который напрямую вызывает базу данных, работает отлично, но как только я использую $ wpdb, он больше не работает

Solutions Collecting From Web of "Есть рабочий sql-запрос … пытается настроить его на использование $ wpdb"

Ваше сообщение об ошибке означает, что $ wpdb в вашем коде в настоящее время указывает на нулевой указатель. Либо WP не загружен, либо отсутствует простой global $wpdb; или оба.

Если вам нужно загрузить WP, включите wp-load.php.

Или лучше, в вашем JS, используйте ajaxurl:

 url = ajaxurl + '?action=youraction' 

рядом (при условии, что код выше):

 add_action('wp_ajax_youraction', 'yourcode'); 

существует не прошедшая проверку подлинность версия (см. wp-admin / admin-ajax.php)

Попробуй это:

 $sql = $wpdb->prepare( "SELECT en_word, ar_word FROM {$wpdb->prefix}enar_words WHERE en_word LIKE '%1\$s%%' OR ar_word LIKE '%1\$s%%'", $q ); $results = $wpdb->get_results( $sql );