Отображение данных из пользовательской таблицы

26 апр. 2020 г., 07:41:02
Просмотры: 23.7K
Голосов: 1

Просто ищу совета, как решить следующую задачу:

Раньше (много времени назад), когда я выполнял периодическую работу с 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

чтобы я мог использовать их где необходимо

Какой правильный способ запроса к базе данных для получения нужной информации?

Надеюсь, всё понятно объяснил...

1
Комментарии

кто-нибудь…? Мне нужно объяснить это подробнее?

Daniel Florian Daniel Florian
28 апр. 2020 г. 08:10:57
Все ответы на вопрос 3
0

Итак, следующий код работает:

$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' — не совсем правильный синтаксис/терминология для использования в данном случае?

28 апр. 2020 г. 12:01:42
0
// Глобальный объект 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;

}
7 окт. 2020 г. 23:15:31
0

Хорошо, возможно, вышесказанное было не очень четко сформулировано?

С тех пор я добился некоторого прогресса:

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'

Буду благодарен за любую помощь

28 апр. 2020 г. 10:44:11