在非对象WordPress上调用成员函数query()

luk*_*ger 0 php mysql wordpress wpdb

我正在尝试将新表格行插入自定义wpdb表格.数据来自发布到脚本的表单.

global $wpdb在脚本的开头声明并插入数据库,但由于某种原因它不喜欢查询功能,WordPress建议在codex中使用.

// declare global wpdb
global $wpdb;

// set variables for posting to db
$name = $_POST['name'];
$email = $_POST['email'];

// post to the db
$wpdb->query( $wpdb->prepare( 
    "
        INSERT INTO $wpdb->entries
        ( name, email )
        VALUES ( %s, %s )
    ", 
    $name, 
    $email 
) );
Run Code Online (Sandbox Code Playgroud)

关于它为什么会被淘汰的任何想法?

小智 9

它是一个wordpress功能,因此$wpdb只有先前已定义全局才能调用全局.

这意味着,在/ wp-content/...文件夹中,如果你使用带有wp特定功能的脚本,那么在使用wordpress core编译它之前它将无法工作.

因此,例如,主题模板或插件文件只能通过调用工作$wpdb,但您的独立脚本不会,即使它在插件或主题目录中.

简单的解决方案是在运行该脚本之前包含/wp-config.php文件.写吧:

include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );
Run Code Online (Sandbox Code Playgroud)

之前调用$wpdb.这个对我有用.