插件生成意外输出-关于WP MySQL转储导入

时间:2014-05-08 作者:Peter

我正在开发插件,出现以下错误:

该插件在激活期间生成了357954个字符的意外输出。如果您注意到“headers ready sent”消息、联合提要问题或其他问题,请尝试停用或删除此插件。

现在,我的激活挂钩如下所示:

    function _activate() {
    global $wpdb;
    require_once(ABSPATH . \'wp-content/plugins/my-plugin/sql.php\'); 
    require_once(ABSPATH . \'wp-admin/includes/upgrade.php\'); 
    dbDelta($sql); 
}
和sql。php的导入方式如下:

$sql .= $wpdb->query($wpdb->prepare("CREATE TABLE IF NOT EXISTS `wp_car_makes` (
  `makes_id` int(11) NOT NULL AUTO_INCREMENT,
  `makes_name` varchar(60) NOT NULL DEFAULT \'\',
  PRIMARY KEY (`makes_id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=350170")); 
$sql .= $wpdb->query($wpdb->prepare("INSERT INTO `wp_car_makes`
(`makes_id`,`makes_name`) VALUES 
(1, \'Acura\'), 
(2, \'Alfa Romeo\'),
.... and it has a 300k+ inserts
(350169, \'Yugo\');
"));
现在,所有东西都正确地导入到DB中,插件工作正常,只是这个错误很烦人,而且我在打开/关闭标签后没有空格等。。。

有什么提示为什么会这样吗?

2 个回复
最合适的回答,由SO网友:Chittaranjan 整理而成

不是那样的$wpdb->query 不需要$wpdb->prepare(), 这是因为没有使用$wpdb->prepare() 以正确的方式。在你的情况下$wpdb->prepare() 从未收到它必须接收的任何值。

请参阅Codex 有关使用的详细信息$wpdb->prepare().

SO网友:Peter

好的,很抱歉,但我没有正确阅读抄本。。。。无论如何,对于所有有相同问题的人来说,查询真的不需要$wpdb->prepare() 部分原因是mysql转储格式正确。[我没有正确使用prepare()!],这样的查询不会触发错误:

$sql .= $wpdb->query("CREATE TABLE IF NOT EXISTS `wp_car_makes` 
(`makes_id` int(11) NOT NULL AUTO_INCREMENT,
`makes_name` varchar(60) NOT NULL DEFAULT \'\',
PRIMARY KEY (`makes_id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 
AUTO_INCREMENT=350170"); 

$sql .= $wpdb->query("INSERT INTO `wp_car_makes`
(`makes_id`,`makes_name`) VALUES 
(1, \'Acura\'), 
(2, \'Alfa Romeo\'),
.... and it has a 300k+ inserts
(350169, \'Yugo\');
");

结束

相关推荐

我的WordPress博客中可以有1个以上的MySQL数据库吗?

在第一次启动时,WordPress会提示您输入MySQL数据库用户名、密码等。然后我可以从仪表板开始工作。WordPress是否可以有多个数据库?如果是,有2-3个数据库的可能示例是什么?什么时候需要一个以上的db?Or the working rule is: one blog - one db? If you have 2-3 blogs, can you manage them from the SAME dashboard!? And each must of course have 1 db?