2015-09-14 2 views
0

Я пытаюсь обновить пользовательские таблицы в моей базе данных WordPress, но я получаю эту ошибку:

Fatal error: Call to a member function update() on null in /Users/jlf/project/wp-admin/controls.php on line 21 

Это мой PHP:

ini_set("display_errors",1); 
    error_reporting(E_ALL); 

    $accentColor = $_POST["accentColor"]; 
    $donateColor = $_POST["donateColor"]; 
    $donateHover = $_POST["donateHover"]; 
    $ticketStatus = $_POST["ticketStatus"]; 
    $logoPath  = $_POST["logoPath"]; 
    $characterPath = $_POST["characterPath"]; 

    global $wpdb; 
    $q_result = $wpdb->update(   // line 21 
     'wp_nyicff', 
     array(
      'accent_color'  => $accentColor, 
      'donate_color'  => $donateColor, 
      'donate_hover'  => $donateHover, 
      'tickets_status' => $ticketStatus, 
      'logo_path'   => $logoPath, 
      'character_path'  => $characterPath 
      ), 
     array('id' => 1), 
     array('%s', '%s', '%s', '%s', '%s', '%s'), 
     array('%d') 
    ); 

    if ($q_result) { 
     print('<script>window.location.href = "index.php";</script>'); 
    } 
    else { 
     die(mysql_error()); 
     print("<br><a href='index.php'>back</a>"); 
    } 

Все переменные отражают их правильные значения. Я глобализовал $wpdb. Что может пойти не так?

+1

Это явно потому, что '$ wpdb' является' null';) Мы больше не можем вам помочь. –

+0

Как вы называете этот код через плагин или в файле function.php? –

+0

@EnriqueChavez Этот файл находится в моем каталоге 'wp-admin', но я настроил виджет, который отправляет эту форму через мой' functions.php'. – JLF

ответ

1

$wpdb был null. Я думал, что глобализация в этом файле помешала бы, но я был неправ. Оказывается, мне нужно было потребовать файл wp-load.php.

https://wordpress.org/support/topic/wpdb-returning-null помог мне разобраться в этом.

В верхней части PHP я писал:

require("../wp-load.php"); 

Кроме того, я узнал, что размещение файлов непосредственно в каталог /wp-admin это плохая практика (как я сделал в этом случае). Было бы лучше сделать плагин, который бы справлялся со всем этим.

Смежные вопросы