我正在尝试更新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
。可能出现什么问题?
答案 0 :(得分:1)
$wpdb
为空。我认为通过全球化它在这个文件中会阻止它,但我错了。结果我需要wp-load.php
文件。
https://wordpress.org/support/topic/wpdb-returning-null帮助我解决了这个问题。
在我写的PHP的顶部:
require("../wp-load.php");
另外,我已经了解到将文件直接放入/wp-admin
目录是不好的做法(正如我在本场景中所做的那样)。制作一个处理所有这些的插件会更好。