Отображение данных из пользовательской таблицы
Просто ищу совета, как решить следующую задачу:
Раньше (много времени назад), когда я выполнял периодическую работу с php/mysql, было относительно легко извлекать/отображать данные из таблицы, используя заголовок таблицы в запросе "WHERE" (т.е. SELECT * FROM 'table' WHERE 'column-name' = 'query'). Таблицы имели колонки для каждого элемента информации, такие как email, телефон, адрес и т.д.
Сейчас я работаю над проектом, используя таблицу, которая была установлена в базу данных плагином, и хочу использовать некоторые из этих данных в другой области сайта, не связанной с плагином.
Вместо отдельной колонки для каждого типа информации, как описано выше, эта таблица имеет:
- колонку user_id, которая связана с учетной записью пользователя WordPress
- колонку meta_key. В этой колонке содержатся записи типа адрес, номер телефона и т.д. (это были бы названия колонок в моем примере выше)
- колонку meta_value. Эта колонка содержит данные для каждого типа meta_key (фактический адрес, номер телефона и т.д.)
Я хочу получить значение каждого элемента для определенного user_id и предварительно заполнить форму, которая отправляется.
Таким образом, их User ID, имя и email извлекаются из таблицы users базы данных WP, когда они авторизованы, используя функцию wp_get_current_user(). После получения User ID я хочу отобразить адрес этого пользователя, номер телефона и т.д. из другой таблицы в моей форме, но я застрял на sql-запросе
Что-то вроде:
global $wpdb;
$current_user = wp_get_current_user();
$uid = $current_user->ID;
$table = $wpdb->prefix . 'plugin-table';
Затем я хочу выбрать адрес пользователя, номер телефона и т.д. и отобразить их как отдельные элементы информации, например:
$mobile
$address
$studentnumber
чтобы я мог использовать их где необходимо
Какой правильный способ запроса к базе данных для получения нужной информации?
Надеюсь, всё понятно объяснил...
Итак, следующий код работает:
$result = $wpdb->get_results ( "SELECT * FROM $studentTable WHERE `user_id` = $uid AND `um_key` LIKE 'student_number' ");
foreach($result as $studentNumber){
echo $studentNumber->um_value.'<br/>';
}
хотя мне кажется, что 'foreach' — не совсем правильный синтаксис/терминология для использования в данном случае?

// Глобальный объект WordPress для работы с базой данных
global $wpdb;
// Формируем имя таблицы с учетом префикса WordPress
$table_name = $wpdb->prefix . 'your_table_name';
// Выполняем SQL запрос для выборки всех данных из таблицы
$results = $wpdb->get_results(
"SELECT * FROM $table_name"
);
// Выводим ID каждой записи
foreach($results as $row)
{
echo $row->id;
}

Хорошо, возможно, вышесказанное было не очень четко сформулировано?
С тех пор я добился некоторого прогресса:
global $wpdb;
$current_user = wp_get_current_user();
$uid = $current_user->ID;
$fname = $current_user->first_name . " " . $current_user->last_name;
$email = $current_user->user_email;
$studentTable = $wpdb->prefix.'um_metadata';
$result = $wpdb->get_results ( "SELECT * FROM $studentTable WHERE `user_id` = $uid AND 'um_key' = 'student_number' ");
foreach($result as $studentNumber){
echo $studentNumber->um_value;
}
Краткий контекст:
- Столбец um_key содержит тип данных (телефон, адрес и т.д.)
- um_value - это столбец с самой информацией
Если я уберу AND 'um_key' = 'student_number'
из SQL-запроса, результат покажет все строки с правильным user_id, но мне нужно вывести только конкретную строку, где um_key равен 'student_number'
Буду благодарен за любую помощь
