Использование WPDB для подключения к внешней базе данных для вставки данных формы Dynami c с помощью php - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть внешняя база данных, куда я хочу вставить свои данные формы с помощью $ wpdb. На странице, где находится форма, я могу объявить $ wpdb глобальным, а затем создать newdb, чтобы получить результаты и отобразить их в моей форме.

Этот код в настоящее время работает:

<?php
global $wpdb;
$member_id = SwpmMemberUtils::get_logged_in_members_id();
$field_name = 'user_name';
$fname_value = SwpmMemberUtils::get_member_field_by_id($member_id, $field_name); 

    $newdb = new wpdb( 'user' , 'pass' , 'database' , 'localhost' );
    $newdb->show_errors();
$results = $newdb->get_results($wpdb->prepare("SELECT * FROM member_lists WHERE username = %s",$fname_value));
?>

Для действия отправки формы у меня есть файл PHP с именем update-list. php, который находится в моей дочерней папке темы для сделать вставку для моего сообщения данных, которые не работают. Я получаю эту ошибку:

Неустранимая ошибка: необработанная ошибка: класс 'wpdb' не найден в / home / site / www/www/home/wp-content/themes/Avada-child/update-list.php: 4 Трассировка стека: # 0 {main}, брошенный в / home / site / www/www/home/wp-content/themes/Avada-child/update-list.php в строке 4

Вот код этого списка обновлений. php file:

<?php

global $wpdb;
$newdb = new wpdb( 'user' , 'pass' , 'database' , 'localhost' );

$stats = array();
for( $i = 0; $i <= $stats; $i++ ) 
{
    $stats[] = array(
        'username' => $_POST['username'],
        'first_name' => $_POST['first_name'],
        'last_name' => $_POST['last_name'],
        'county' => $_POST['county'],
        'street' => $_POST['street'],
        'city' => $_POST['city'],
        'ward' => $_POST['precinct'], 
    );
}

foreach ( $stats as $stat )
    $newdb=$wpdb->insert( 'member_lists', $stat );


?>

Почему он распознает wpdb на странице с моей формой, но не в форме обновления списка действий. php файл?

1 Ответ

0 голосов
/ 12 февраля 2020

Это звучит как то, что вы должны быть Использование AJAX для (что устранит проблему под рукой).

С учетом вышесказанного, ваша проблема в том, что вы повторное размещение в произвольном PHP файле , в котором нет знаний WordPress . Поскольку он не был загружен в запрос с помощью методов WordPress, вам нужно загрузить WordPress самостоятельно. Взгляните на этот ответ WPSE .

По сути, как минимум, вам нужно добавить require_once '/path/to/your/wp-load.php'; вверху файла update-list.php, прежде чем вы сможете что-либо использовать ' WordPress ', в том числе $wpdb.

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