这是我的代码,我将创建查询写入函数并在register_activation_hook()
函数中调用它,但它无效。
function test_contact_form() {
global $wpdb;
$connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_NAME);
if (!$connection){ die('Error: ' . mysql_error());}
require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
$db_table_name = $wpdb->prefix . 'contactus_detail'; // table name
if( $wpdb->get_var( "SHOW TABLES LIKE '$db_table_name'" ) != $db_table_name ) {
if ( ! empty( $wpdb->charset ) )
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty( $wpdb->collate ) )
$charset_collate .= " COLLATE $wpdb->collate";
$sql = "CREATE TABLE " . $db_table_name . " (
id int(11) NOT NULL auto_increment,
ip varchar(15) NOT NULL,
name varchar(60) NOT NULL,
emailid varchar(200) NOT NULL,
mobileno varchar(10) NOT NULL,
message varchar(1000) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
dbDelta( $sql ); // create query
}
}
register_activation_hook(__FILE__, 'test_contact_form');
答案 0 :(得分:0)
愿这对你有帮助..
function test_contact_form()
{
global $wpdb;
$db_table_name = $wpdb->prefix . 'contactus_detail'; // table name
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $db_table_name (
id int(11) NOT NULL auto_increment,
ip varchar(15) NOT NULL,
name varchar(60) NOT NULL,
emailid varchar(200) NOT NULL,
mobileno varchar(10) NOT NULL,
message varchar(1000) NOT NULL,
UNIQUE KEY id (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
add_option( 'test_db_version', $test_db_version );
}
register_activation_hook( __FILE__, 'test_contact_form' );
答案 1 :(得分:0)
当你点击仪表板中的激活链接时,将在插件激活时触发钩子“register_activation_hook”。
您的代码没问题,但在“function.php”文件中无效。创建插件时,“register_activation_hook”将起作用。
或强>
如果要从“function.php”文件创建表。你可以简单地使用'init'动作钩子。就像那样
<强> ADD_ACTION( '初始化', 'test_contact_form'); 强>
您只需将上一行替换为上一行
即可答案 2 :(得分:0)
你写过这句话,
UISearchBar *search=[[UISearchBar alloc]initWithFrame:CGRectMake(10, 20, 100, 20)];
[search setBarTintColor:[UIColor clearColor]];
search.backgroundImage=[UIImage new];
self.navigationItem.titleView=search;
不需要。 而且,您不需要在if。
中检查 $connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_NAME);
if (!$connection){ die('Error: ' . mysql_error());}
个变量
请查看以下链接问题及其答案,以解决您的问题。 https://stackoverflow.com/a/29890105/2219158
答案 3 :(得分:0)
我修改了 @SelvaKumar 答案。就像在插件激活后一样,$db_table_name
表将被创建到WordPress中。如果有人停用了插件,然后又激活了插件,它将尝试再次创建$db_table_name
表,并会引发错误。
在此代码中,我们需要检查是否已存在表,然后此脚本不应更多。
function test_contact_form()
{
global $wpdb;
$db_table_name = $wpdb->prefix . 'contactus_detail'; // table name
$charset_collate = $wpdb->get_charset_collate();
//Check to see if the table exists already, if not, then create it
if($wpdb->get_var( "show tables like '$db_table_name'" ) != $db_table_name )
{
$sql = "CREATE TABLE $db_table_name (
id int(11) NOT NULL auto_increment,
ip varchar(15) NOT NULL,
name varchar(60) NOT NULL,
emailid varchar(200) NOT NULL,
mobileno varchar(10) NOT NULL,
message varchar(1000) NOT NULL,
UNIQUE KEY id (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
add_option( 'test_db_version', $test_db_version );
}
}
register_activation_hook( __FILE__, 'test_contact_form' );