Problem in using wpdb

时间:2015-07-27 作者:M.Mazraeshahi

我使用了;wpdb“;在我的代码中,但它不起作用,并且出现以下错误:

致命错误:对非对象调用成员函数insert()

注意:尝试获取非对象的属性“;在tablename中=$wpdb->;“前缀。”投诉\';

global $wpdb;
    $name = $_POST["name"];
    $email = $_POST["email"];
    $dis = $_POST["dis"];
    $code = $_POST["code"];
    
function insert_record_to_db($name,$email,$dis){
    global $wpdb;
$tablename = $wpdb->prefix.\'complaint\';
    $data=array( 
            \'name\' => \'$name\',
            \'email\' => \'$email\',
            \'dis\' => \'$dis\'
        );
    $format= array(\'%s\',\'%s\',\'%s\');
    
    $wpdb->insert( $tablename , $data , $format );
};
insert_record_to_db($name,$email,$dis);

1 个回复
SO网友:s_ha_dum

此错误:

致命错误:对非对象调用成员函数insert()

意味着$wpdb 没有实例化,所以您运行代码太早或在WordPress上下文之外——例如,在直接访问的外部PHP文件中,这是我怀疑的(可能是构思糟糕的AJAX请求?)。

如前所述,代码的格式更多,数据元素和单引号无论如何都会导致此失败(在某种意义上),因为您将在数据库中插入“$email”和“$name”字符串。

function insert_record_to_db($name,$email,$dis){
  global $wpdb;
  $tablename = $wpdb->prefix.\'complaint\';
  $data=array( 
    \'name\' => $name,
    \'email\' => $email,
    \'dis\' => $dis
  );
  $format= array(\'%s\',\'%s\',\'%s\');
  $wpdb->insert( $tablename , $data , $format );
};
insert_record_to_db(\'a\',\'b\',\'c\');

结束

相关推荐

$wpdb->Prepare的工作方式与MYSQL_REAL_EASH_STRING不同

我正在开发WordPress插件,最近我计划从SQL迁移到$wpdb. 我正在使用一个名为$wpdb->prepare 而不是mysql_real_escape_string 但它不起作用。以下是我尝试的内容:代码:echo $fetch_row; 输出:a: 5:{s:9:“task\\u name”;s:10:“立即备份”;s:9:“机制”;s:10:“singleCall”代码:echo mysql_real_escape_string( $fetch_row ) 输出:\