有人可以帮助我弄清楚为什么wordpress在我激活我的插件时不会创建“wp_locations”表。
global $wp_locations_version;
$wp_locations_version = "1.1";
define( 'LOCATIONURL', plugins_url().'/wp_locations' );
function locations_install() {
global $wpdb;
global $wp_locations_version;
$sql = "CREATE TABLE IF NOT EXISTS wp_locations (
ID BIGINT NOT NULL AUTO_INCREMENT,
location VARCHAR(100) NOT NULL,
address VARCHAR(255) NOT NULL,
lattitude INT,
longitude INT,
description MEDIUMTEXT NULL,
person VARCHAR(50) NOT NULL,
personimg VARCHAR(255) NOT NULL,
email VARCHAR(255) NULL,
phone INT,
sort INT
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("wp_locations_version", $wp_locations_version);
}
register_activation_hook( __FILE__ , 'locations_install' );
答案 0 :(得分:1)
您需要在SQL中包含至少一个KEY字段。
来自http://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table
您必须在SQL语句中将每个字段放在自己的行中。
单词PRIMARY KEY和。之间必须有两个空格 主键的定义。
您必须使用关键字KEY而不是其同义词INDEX和您必须至少包含一个KEY。
您不得在字段名称周围使用任何撇号或反引号。
答案 1 :(得分:0)
代码中没有与数据库的连接。添加如下函数:
function MySQLConnect( ) {
$MySQLink = mysql_connect( DB_HOST, DB_USER, DB_PASSWORD ) ;// These parameters are defined in 'wp-config.php'
if ( !$MySQLink ) :
return FALSE ;
else :
return $MySQLink ;
endif ;
}
然后,在函数 locations_install()中,在开头添加以下行以建立连接:
$Link = MySQLConnect( ) ;
if ( !$Link ) return FALSE ;
...
希望这有帮助。
更新:
站立纠正苏达。
在Wordpress中执行此操作的方法应该是使用类wpdb,它不需要新连接。在这种情况下,存在以下问题:
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
从wp-admin调用插件脚本。它应该是:
require_once('/includes/upgrade.php');
抱歉误导。