Intereting Posts
Как вернуться к wordpress 3.5 Показать ребенка с родительской страницы, включая всех других родителей Пользовательская навигация с использованием wp_nav_menu и walker Изменение файла загрузки по умолчанию с помощью wp Скелет Что является допустимым родителем для get_terms ()? Настройка столбцов администратора для пользовательского типа сообщений, но теперь большинство встроенных категорий не отображаются? Как я могу комбинировать запросы meta_query? Показать кнопку, если мета-окно имеет контент, иначе скрыть Как я могу реализовать систему уведомлений в WordPress? Сила 3 ​​Виджеты панели управления столбцами Могут ли блоги нескольких пользователей быть доступными из двух разных поддоменов? Не удается аутентифицировать wp rest api с другого сервера (с oauth) Shortcode не отображает видео как ожидалось Получение и хранение изображений, связанных с другими доменами на локальном сервере? WordPress wp_options стал слишком большим

Не удается запустить запрос базы данных

Я пишу функцию для запроса некоторой информации из пользовательской таблицы в базе данных. Кажется, что я не могу запросить базу данных в нужном поле.

function ch_details_from_id($id) { global $wpdb; $details = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "ch_guests WHERE key = '" . $id . "'", ARRAY_A); return $details; } 

$ id в настоящее время «001». Если я ищу в любом другом поле таблицы, я получаю ожидаемые результаты, но в этом поле ничего не возвращается.

Если я запускаю точно такой же запрос в phpMyAdmin, он работает нормально.

Solutions Collecting From Web of "Не удается запустить запрос базы данных"

Здесь выдается имя столбца. Вы используете ключ столбца в запросе, который является ключевым словом / индексом по умолчанию в mysql.

Для решения этой проблемы просто используйте символ «Grave accent (`) »в запросе для имени столбца. Не нужно изменять имя столбца. Поэтому в вашем случае правильный запрос

 $details = $wpdb->get_results("SELECT * FROM " . $wpdb->prefix . "ch_guests WHERE `key` = '" . $id . "'", ARRAY_A); 

Запустите указанный выше запрос. Это работает для меня, поэтому я считаю, что это сработает и для вас.

Вы должны использовать $wpdb->prepare для запросов, так как он выполняет всю санирующую обработку и ускользает. Кроме того, key зарезервирован как имя поля в MySQL:

 function ch_details_from_id($id) { global $wpdb; // or try using " . $wpdb->prefix . "ch_guests $query = "SELECT * FROM $wpdb->ch_guests WHERE guest = %d"; $details = $wpdb->get_results( $wpdb->prepare( $query, $id ) ); return $details; } 

Для отладки вы можете вывести последний запрос $wpdb .

Имя поля является зарезервированным именем. Изменение с key на id решило проблему.