我正在尝试在我的wordpress插件主文件中创建一个数据库表。这是我创建数据库表的代码。当我从Wordpress控制面板激活插件时,插件激活但数据库表不会创建。
<?php
function keywords_ranker_install() {
global $wpdb;
global $keyword_rankerdb;
$keyword_rankerdb = "1.0";
$table_name = $wpdb->prefix . "search_engine";
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'")!= $table_name) {
$sql = "CREATE TABLE IF NOT EXISTS ".$table_name." (
id int(11) NOT NULL AUTO_INCREMENT,
engine text NOT NULL,
PRIMARY KEY ('id'));";
//reference to upgrade.php file
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
//$wpdb->query($sql);
//update_option('keyword_ranker_version',$keyword_rankerdb);
}
//action hook for plugin activation
}//end of plugin installation
register_activation_hook(__FILE__,'keywords_ranker_install' );
&GT;
我不确定我缺少什么,任何帮助都会非常感激!
答案 0 :(得分:1)
您的语法错误,因为您的条件已经在检查,所以不需要此IF NOT EXISTS。
注意:我将其切换为所有单引号,以便更容易理解并删除(id)中的单引号;
function keywords_ranker_install() {
global $wpdb;
global $keyword_rankerdb;
$keyword_rankerdb = "1.0";
$table_name = $wpdb->prefix . "search_engine";
if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) != $table_name ) {
$sql = 'CREATE TABLE ' . $table_name . ' (
id int(11) NOT NULL AUTO_INCREMENT,
engine text NOT NULL,
PRIMARY KEY (id))';
//reference to upgrade.php file
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
//update_option('keyword_ranker_version',$keyword_rankerdb);
}
//action hook for plugin activation
}
//end of plugin installation
register_activation_hook( __FILE__, 'keywords_ranker_install' );