Данные не получены из базы данных - PullRequest
1 голос
/ 30 марта 2020

У меня есть этот кусок кода:

<?php
global $wpdb;

$table_name = $wpdb->prefix . 'wpex_programma';
// This retrieves the data from the database
$retrieve_data = $wpdb->get_results( "SELECT Anaam FROM {$table_name}" );
?>
<form action="#" enctype="multipart/form-data" method="post">
    <?php wp_nonce_field( 'set_programma_action', 'set_programma' ); ?>
    <table>
        <?php foreach ( $retrieve_data as $retrieved_data ) { ?>
            <tr>
                <th>Programma:</th>
                <td style="vertical-align: middle;"><?php echo esc_html( $retrieved_data->Anaam ); ?></td>
                <th>
                    <button name="programma" type="submit" value="<?php echo esc_attr( $retrieved_data->Anaam ); ?>">Abonneer</button>
                </th>
            </tr>
        <?php } ?>
    </table>
</form>

<?php
    // Verify nonce and safe the data if the user is logged in.
    // Nonce docs: https://developer.wordpress.org/themes/theme-security/using-nonces/
    if (isset( $_POST['programma'] ) && isset( $_POST['set_programma'] ) && wp_verify_nonce( $_POST['set_programma'], 'set_programma_action' )) {

      $data = filter_input( INPUT_POST, 'programma', FILTER_SANITIZE_STRING );
      $current_user_id = get_current_user_id();

        if ( $current_user_id && ! empty( $data ) ) {
            update_user_meta( $current_user_id, 'programma', $data );
        }
    }
?>

Страница не возвращает данные из базы данных. Ничего не отображается, кроме моего navbar и нижнего колонтитула. Как я могу решить эту проблему?

Код для извлечения и отображения данных:

global $wpdb;

$table_name = $wpdb->prefix . 'wpex_programma';
// Dit haalt de data op uit de database
$retrieve_data = $wpdb->get_results( "SELECT Anaam FROM {$table_name}" );
?>
<form action="#" enctype="multipart/form-data" method="post">
    <?php wp_nonce_field( 'set_programma_action', 'set_programma' ); ?>
    <table>
        <?php foreach ( $retrieve_data as $retrieved_data ) { ?>
            <tr>
                <th>Programma:</th>
                <td style="vertical-align: middle;"><?php echo esc_html( $retrieved_data->Anaam ); ?></td>
                <th>
                    <button name="programma" type="submit" value="<?php echo esc_attr( $retrieved_data->Anaam ); ?>">Abonneer</button>
                </th>
            </tr>
        <?php } ?>
    </table>
</form>

Я также покажу свою структуру базы данных:

Мой wpex_usermeta, выбор должен быть сохранен здесь:

enter image description here

Моя wpex_programma. Все программы сохраняются здесь:

enter image description here

РЕДАКТИРОВАТЬ

echo var_dump($wpdb->prefix);

выход

строка ( 5) "wpex _"

Я также сделал эхо var_dump($tablename);, и он показал NULL

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Видя разделы вопросов и комментариев, информация кажется противоречивой.

Если

echo var_dump($wpdb->prefix);

, то получается

string (5) «wpex _»

, что означает, что из-за

$table_name = $wpdb->prefix . 'wpex_programma';

$table_name будет иметь значение

wpex_wpex_programma

, которое отличается от ожидаемого имени таблицы, которое является

wpex_programma

, поэтому изменение кода на

$table_name = $wpdb->prefix . 'programma';

должно решить вопрос. Остерегайтесь дублирования кода, вы определяете $table_name в разных местах, поэтому вам нужно будет применить изменение везде.

Вы также утверждаете, что $table_name - это NULL, что является либо печатью перед ним. был инициализирован, или вы проверили его в месте, где он не был (должным образом) инициализирован вообще. Вам нужно будет найти шаблон

$ table_name =

во всей исходной папке и убедиться, что он правильно инициализирован во всех случаях.

0 голосов
/ 30 марта 2020

В phpmyadmin вы можете проверить свои запросы. Если в вашем запросе что-то не так, вы не получите результат.

Так что go для phpmyadmin и откройте вашу таблицу, перейдите на вкладку sql и тестируйте свой запрос, пока не получите результат. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...