我尝试更新我的插件。因此,我必须升级mysql_table。但是当尝试新列时,程序会获得异常。
这是我当前的表格:
$sql = "CREATE TABLE {$table_name} ( say_id int(11) not null AUTO_INCREMENT, customer_mail text not null, customer_name text not null, customer_messagge text not null, messagge_date_time datetime not null, PRIMARY KEY (say_id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1"; require_once(ABSPATH . "wp-admin/includes/upgrade.php"); dbDelta($sql);
现在,我向colum添加多一张桌子。我尝试更改表,一次工作,并添加一列,但又刷新一次,我收到此错误。
这是我的代码
$wpdb->query("ALTER TABLE wp_customer_say ADD say_state INT(1) NOT NULL DEFAULT 1");
这是我的错误
WordPress数据库错误:[重复的列名’say_state’] ALTER TABLE wp_customer_say添加了say_state INT(1)NOT NULL缺省1
我看到这个错误,想尝试一下;
$query = $wpdb->query("select * from wp_customer_say"); $respond = mysql_num_fields( $query ); $column_array = array(); for($i = 0; $i < $respond ; $i++): $column_array[] = mysql_field_name($query,$i); endfor; if( !in_array("say_state",$column_array) ): $wpdb->query("ALTER TABLE wp_customer_say ADD say_state INT(1) NOT NULL DEFAULT 1"); endif;
我得到这个错误。
Warning: mysql_num_fields() expects parameter 1 to be resource, integer given in
请帮忙。谢谢你。对不起,英语不好。
使用此查询。我只使用mysql-standred来通过快速查询获取字段名称,这将解决您的问题:
$row = $wpdb->get_results( "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'wp_customer_say' AND column_name = 'say_state'" ); if(empty($row)){ $wpdb->query("ALTER TABLE wp_customer_say ADD say_state INT(1) NOT NULL DEFAULT 1"); }