我试图使用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变量配置一些工作吗?
答案 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/。