【发布时间】:2018-07-02 16:31:19
【问题描述】:
我在使用 foreach 结果中的动态列创建表时遇到问题。
准备专栏的代码:
$fields = $wpdb->get_results("SELECT goal_id FROM wpgetyp_goalsettings WHERE goaltype IN('daily','weekly') AND user_id='$current_user->ID'");
foreach ($fields as $field) {
$cfield = "field_$field->goal_id int(5) NOT NULL,";
}
结果:
field_1 int(5) NOT NULL,field_2 int(5) NOT NULL,field_3 int(5) NOT NULL,field_4 int(5) NOT NULL,field_5 int(5) NOT NULL,
创建表的代码:
$table_name = $wpdb->prefix.'user_'.$current_user->ID;
if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
//table not in database. Create new table
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id int(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id varchar(15) NOT NULL,
goals_type varchar(10) NOT NULL,
goals_date date NOT NULL,
start_time time NOT NULL,
end_time time NOT NULL,
$cfield
lead_type varchar(50) NOT NULL,
entry_date timestamp
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
else{
}
注意$cfield。它只会在创建表时写入最后一个结果。只有field_5 将在表创建期间包含。
【问题讨论】:
标签: php mysql database wordpress