我最近从头开始制作了一个插件我尝试在插件激活上制作一个表,并且我在同一个方面取得了成功,但现在我想在插件激活上创建多个表,但我没有得到预期结果
它只有两个表中的一个,这是我的代码。
// Registering plugin
register_activation_hook(__FILE__,'myplugin_activate');
function myplugin_activate()
{
global $wpdb;
$table_name1 = $wpdb->prefix . "myentries";
$table_name2 = $wpdb->prefix . "myemail";
//installed_ver = get_option('my-voting-version');
if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
sub longtext NOT NULL,
message longtext NOT NULL,
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
if( $wpdb->get_var("show tables like '$table_name2' ") != $table_name2 )
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name2) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
email varchar(50) NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
}
此代码只生成一个表,即最后一个表#34; * prefix_myemail"。请建议我或给我准确的代码来纠正这个问题。
提前感谢您的帮助..
答案 0 :(得分:0)
您可能忘记了myentries
表的主键,
尝试像这样添加主键
if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
sub longtext NOT NULL,
message longtext NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}