在$ wpdb类中使用update()时出现致命错误

时间:2015-09-14 22:08:10

标签: php sql wordpress wpdb

我正在尝试更新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 个答案:

答案 0 :(得分:1)

$wpdb为空。我认为通过全球化它在这个文件中会阻止它,但我错了。结果我需要wp-load.php文件。

https://wordpress.org/support/topic/wpdb-returning-null帮助我解决了这个问题。

在我写的PHP的顶部:

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

另外,我已经了解到将文件直接放入/wp-admin目录是不好的做法(正如我在本场景中所做的那样)。制作一个处理所有这些的插件会更好。