我正在使用Jeditable插件在管理区域内的一个表上启用内联编辑,该表是由我编写的一个小插件生成的。(http://www.appelsiini.net/projects/jeditable)。基本上一切都正常,但前提是更新数据库字段的代码在插件的代码中。当我将代码复制到另一个文件并尝试编辑某些内容时,我会出现以下错误:
致命错误:对XX行XXX中的非对象调用成员函数update()
我只是部分理解为什么我会犯这样的错误。是因为未初始化$wpdb吗?我尝试了global$wpdb,但运气不好。这就是为什么我认为我遗漏了一些东西,代码中的某个地方$wpdb不知何故“丢失”,所以找不到更新方法。这确实令人沮丧,因为代码正在工作,但只要我在单独的文件中使用它,它就不工作了。如果需要,我可以发布代码,但我希望这只是一个标准问题。
编辑:好的,下面是我的代码:
这是正在运行的Jeditable插件,就在表之后(假设它在index.php中):
<script>
jQuery(document).ready(function() {
jQuery(\'.edit\').editable(\'../wp-content/plugins/myplugin/save.php\', {
indicator : \'Saving...\',
tooltip : \'Please click to edit!\',
id : \'my_id\',
name : \'my_value\',
width : \'none\',
cssclass : \'editable-input\'
});
});
</script>
正如你所看到的,我正在调用save。php,如下所示:
if(isset($_POST[\'my_id\']))
{
error_reporting (E_ALL);
$explode = explode(\'-\', $_POST[\'my_id\']);
$my_row = $explode[0];
$my_id = $explode[1];
$my_value = $_POST[\'ck_value\'];
if($my_row == \'date\') {
$exp = explode(\' \', $my_value);
switch($exp[1]) {
case \'Jan\': case \'jan\': case \'Januar\': case \'januar\': case \'01\': case \'1\':
$month = \'01\';
$montha = \'Jan\';
break;
case \'Feb\': case \'feb\': case \'Februar\': case \'februar\': case \'02\': case \'2\':
$month = \'02\';
$montha = \'Feb\';
break;
}
$day = substr($exp[0], 0, 2);
$wpdb->update($table_name, array(\'ck_date\' => $exp[2].\'-\'.$month.\'-\'.$day, \'ck_monthabbr\' => $montha) , array(\'ck_id\' => $my_id));
echo $exp[2].\'-\'.$month.\'-\'.$day.\'<br />\';
}
if($my_row == \'ogo\') {
$wpdb->update($table_name, array(\'ck_geo\' => $my_value) , array(\'ck_id\' => $my_id));
}
if($my_row == \'vue\') {
$wpdb->update($table_name, array(\'ck_venue\' => $my_value) , array(\'ck_id\' => $my_id));
}
}
索引内部。php,我定义了全局$wpdb和$table\\u名称,但保存了。php无法识别这些变量。