我正在开发插件,出现以下错误:
该插件在激活期间生成了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中,插件工作正常,只是这个错误很烦人,而且我在打开/关闭标签后没有空格等。。。
有什么提示为什么会这样吗?
最合适的回答,由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\');
");