php - mysql创建具有混合列静态和动态的表

标签 php mysql database wordpress

我在从 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

最佳答案

您正在用新值覆盖每个结果。相反,您需要连接所有这些值:

$fields = $wpdb->get_results("SELECT goal_id FROM wpgetyp_goalsettings WHERE goaltype IN('daily','weekly') AND user_id='$current_user->ID'");
$cfield = "";

foreach ($fields as $field) {
    // Long way of string concatenation
    $cfield = $cfield . "field_$field->goal_id int(5) NOT NULL, ";
    // Short way, mentioned by @FrankerZ in the comments (chose one)
    // $cfield .= "field_$field->goal_id int(5) NOT NULL, ";
}

关于php - mysql创建具有混合列静态和动态的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408759/

相关文章:

php - jQuery $.post 字符串转义问题

mysql - 根据 PostgreSQL 中的列值指定的间隔

javascript - 如何保留从 php 到 javascript 传递字符串的段落格式

java - 在 2 个表中使用具有相同列名的 ResultSetMetaData

php - App\Http\Controllers\Admin\SettingsController::destroy() 缺少参数 1

php - mysqli_fetch_array while 循环列

PHP cli 从用户那里获取输入然后转储到变量中可能吗?

mysql - 将以下 MySQL 查询转换为 codeigniter

functional-programming - 函数式编程更好地操作数据库数据列表?

c# - In Code first The INSERT 语句与 FOREIGN KEY 约束冲突