Php 致命错误:对非对象调用成员函数get_results()(来自Plugin&;WordPress的jQuery)

Php 致命错误:对非对象调用成员函数get_results()(来自Plugin&;WordPress的jQuery),php,select,wordpress,jquery-forms-plugin,Php,Select,Wordpress,Jquery Forms Plugin,我试图在Wordpress插件中使用jQuery的表单插件。我正在关注这个。我已将脚本排队并构建表单。在csf_form_handler.php(相当于示例的json-echo.php)中,我可以访问表单中选择的项目(我有一个radiobutton组) 我的目标是在SELECT语句中使用表单中选择的值从自定义wordpress数据库表返回数据 $csf_selected_sport = $_POST['csf_radiobutton_group_sport']; global $wpdb;

我试图在Wordpress插件中使用jQuery的表单插件。我正在关注这个。我已将脚本排队并构建表单。在csf_form_handler.php(相当于示例的json-echo.php)中,我可以访问表单中选择的项目(我有一个radiobutton组)

我的目标是在SELECT语句中使用表单中选择的值从自定义wordpress数据库表返回数据

$csf_selected_sport = $_POST['csf_radiobutton_group_sport'];

global $wpdb;

$csf_db_table = $wpdb->prefix . "activity";


$csf_data = $wpdb->get_results($wpdb->prepare("
            SELECT *
            FROM " .$csf_db_table. "
            WHERE  " . $csf_selected_sport ." ")); 
不幸的是,我得到了:

注意:尝试获取非对象的属性(在$wpdb->prefix上) (行)

致命错误:对非对象调用成员函数get_results() (在$csf_数据行上)

csf\u form\u handler.php
中的上述代码不在函数中。我不知道这是否有区别

如何更改代码以便使用$wpdb


谢谢。

您在哪里运行此代码?听起来好像是在创建$wpdb实例之前(或超出范围)运行它

如何加载csf\u form\u handler.php文件?您是将其作为脚本的一部分包含在Wordpress中,还是它是您自己的插件?如果是后者,请记住您需要首先激活它,以便WP可以将其包括在加载序列中(我假设它已经激活,但JIC)

要查看$wpdb对象是否已经创建,可以运行
打印出对象的内容


让我知道更多信息,希望我能帮助您。

在编写插件时,最好将您的数据处理保留在插件的主文件中(即不将其发送到单独的文件),并激活相应的函数来处理。基本上,您可以将表单的操作设置为指向插件的文件或包含表单的页面

假设您正在处理的表单显示在站点前端的侧栏上。要在用户单击“提交”时处理来自该表单的数据,您可以在我们的插件文件中创建一个函数,例如:

function $csf_get_data(){

global $wpdb; //since your this function is in your plugin’s file, $wpdb should be available, so no errors here! =)

$csf_selected_sport = $_POST['csf_radiobutton_group_sport'];

$csf_db_table = $wpdb->prefix . "activity";

$csf_data = $wpdb->get_results($wpdb->prepare("
            SELECT *
            FROM " .$csf_db_table. "
            WHERE  " . $csf_selected_sport ." ")); 

    //do your stuff with $csf_data
}

//now run it everytime the plugin is run
if(isset($_POST[‘submit’])){
    $csf_get_data();
}
现在,您可以设置表单操作的属性以将数据发送到同一页面,该页面将能够使用上述函数处理数据。您可以使用:

    action=””

action=“”
请注意:为了确保数据来自您的站点(尤其是公共表单),请记住使用wp_nonce_field()创建一个nonce字段,该字段可以通过wp_nonce()由wordpress验证:

希望有帮助


Vq.

我遇到了同样的问题,但我通过从WordPress文件夹的根目录中包含
wp config.php
文件解决了这个问题,如下所示:

require_once('../../../wp-config.php');
global $wpdb;

我希望这能有所帮助。

我犯了这个致命的错误,因为我忘了把

global $wpdb;

在我放置$wpdb->get_results()函数的文件中。

Hi@Vidal Quevedo,感谢您的留言。我正在尝试制作我自己的插件。我将表单的操作设置为csf_form_handler.php。我的插件被激活了。当我运行print_r($wpdb);,“我收到通知:未定义变量:wpdb”。我猜,因为处理程序是通过表单的action=“my handler”加载的,所以它没有访问WP函数的权限。如果你有什么建议,我很乐意听听。谢谢。你好@Vidal Quevedo,非常感谢你的帮助。我学到了一些新东西;准确地说。
global $wpdb;