wordpress数据库调用成员错误

时间:2014-08-04 14:52:08

标签: php mysql database wordpress

我试图使用wordpress中的自定义php将数据插入我的数据库。整个php文件包含:

  <?php  global $wpdb;
    if(isset($_POST['Import']))
    {
     $filename = $_FILES["file"]["tmp_name"];
          if($_FILES["file"]["size"] > 0)
        {
        $file = fopen($filename, "r");


            $count = 0; 
            while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
            {
                $count++; 
                if($count>1){                                $wpdb->insert('wp_inventory_list',
                    array( 'project_code' => $emapData[0],
                           'phase' => $emapData[1],
                           'subphase' => $emapData[2],
                           'block' => $emapData[3],
                           'lot' => $emapData[4],
                           'lot_area' => $emapData[5],
                           'flr_area,' => $emapData[6],
                           'model_code' => $emapData[7],
                           'house_model' => $emapData[8],
                           'tcp' => $emapData[9] ),
                    array( '%s', '%s' ,'%s' ,'%s' ,'%s' ,'%s' ,'%s' ,'%s' ,'%s' ,'%s'));
                }                  
            }
            fclose($file);
            echo 'CSV File has been successfully Imported';     
        }
        else
        {
            echo 'Invalid File:Please Upload CSV File';
        }

    }
?>

每当我尝试运行脚本时,我都会收到错误&#34;在非对象上调用成员函数insert()&#34;。我的$wpdb无法正常工作吗?我在wp-content/themes/mytheme/文件夹中添加了自定义php文件。我还需要为全局$ wpdb变量配置一些工作吗?

1 个答案:

答案 0 :(得分:2)

$wpdb可能是null。你可以通过运行var_dump($wpdb)来解决这个问题。如果此脚本不在wordpress框架中运行,则声明变量global将无济于事。如果这是一个“额外”文件,意味着在您的案例中没有在模板内部调用,它将不会像这样工作。

在Wordpress 3.4+中你必须这样做:

define( 'SHORTINIT', true );
require_once('path/to/wp-load.php' );
global $wpdb;
...

对于较旧的Wordpress,请参阅http://www.stormyfrog.com/using-wpdb-outside-wordpress/