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

时间:2013-09-12 08:45:15

标签: 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 
) );

关于它为什么会出现问题的任何想法?

3 个答案:

答案 0 :(得分:9)

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

这意味着,在/ wp-content / ...文件夹中如果使用具有wp特定功能的脚本,则在使用wordpress核心编译之前它将无法工作。

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

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

include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );

在致电$wpdb之前。它对我有用。

答案 1 :(得分:0)

<?php
/**
 * Created by PhpStorm.
 * User: manisha
 * Date: 05-11-2015
 * Time: 15:30
 */
include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );
$email = $_REQUEST['email'];

global $wpdb;
$result=$wpdb->query(
    $wpdb->prepare(
        "
             DELETE FROM wp_addemail
                 WHERE email = %s
                ",
        $email

    )
);

this things is worked for me

答案 2 :(得分:0)

我已经使用

解决了我的错误
  include_once($_SERVER['DOCUMENT_ROOT'].'/wordpress/wp-config.php' );

这段代码实际上我已经使用Ajax在我的自定义数据库表中提交了表单数据但是我遇到了致命的错误。现在致命的错误已经解决了。