MySql - 更改表并添加列(如果不存在)

MySql  - 更改表并添加列(如果不存在)

问题描述:

I have a mysql query where I'm adding columns to the table by altering the table but it throws an error Error updating record: Champ 'rating' inconnu dans field list

Existing Table Columns

id  int(11)         
script_url  text    
date    varchar(4)  
rateing varchar(4)  
photo   varchar(4)  
dateformat  varchar(4)
page_limit  int(4)  
proj_desc   varchar(4)
companyname varchar(4)
text_color  varchar(255)
citation_color  varchar(255)
bg_color    varchar(255)
border_color    varchar(255)
custom_css  blob
ratingsformat   varchar(250)
version varchar(250)

Query

$col = mysqli_query( $link, "SELECT proj_desc,companyname,text_color,citation_color,bg_color,border_color,ratingsformat,version,rating,customratings,speed,pagination,global_option FROM 'setting'");
if (!$col){
    mysqli_query($link, "ALTER TABLE  `setting`
        ADD  COLUMN IF NOT EXISTS `proj_desc` VARCHAR( 255 ) ,
        ADD  COLUMN IF NOT EXISTS `companyname` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `text_color` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `citation_color` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `bg_color` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `border_color` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `ratingsformat` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `version` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `rating` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `customratings` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `speed` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `pagination` VARCHAR( 255 ),
        ADD  COLUMN IF NOT EXISTS `global_option` VARCHAR( 255 ),
        DROP `custom_css` blob
        "
    );
}

Error Error updating record: Champ 'rating' inconnu dans field list

What am I doing wrong.

我有一个mysql查询,我通过更改表将列添加到表中,但是它会抛出错误错误更新记录:冠军'评级'不确定字段列表 code> p>

现有表格列 strong> p>

   id int(11)
script_url text 
date varchar(4)
rateing varchar(4)
photo varchar(4)
dateformat varchar(4)
page_limit int(4)
proj_desc varchar(4)
companyname varchar  (4)
text_color varchar(255)
citation_color varchar(255)
bg_color varchar(255)
border_color varchar(255)
custom_css blob 
ratingsformat varchar(250)
version varchar(250)
  code>   pre> 
 
 

查询 strong> p>

  $ col = mysqli_query($ link,“SELECT proj_desc,companyname,text_color,citation_color,bg_color  ,border_color,ratingformat,version,rating,customratings,speed,pagination,global_option FROM'setting'“); 
if(!$ col){
 mysqli_query($ link,”ALTER TABLE`setti  ng` 
添加列如果不是'proj_desc` VARCHAR(255),则添加列如果不存在`companyname` VARCHAR(255),则添加列如果不存在`text_color` VARCHAR(255),
 ADD 列如果不是'citation_color` VARCHAR(255),
添加列如果不存在`bg_color` VARCHAR(255),
添加列如果不存在`border_color` VARCHAR(255),则添加列如果不存在则添加列 ratingformat` VARCHAR(255),
 ADD COLUMN IF NOT COLISN IF version VARCHAR(255),
 ADD COLUMN IF NOT COLISN如果不是`rating`VARCHAR(255),
 ADD COLUMN IF NOT COLISN'quantratings` VARCHAR(255  ),
添加列如果不存在`speed` VARCHAR(255),
添加列如果不存在`分页`VARCHAR(255),
添加列如果不存在`global_option` VARCHAR(255),
 DROP  `custom_css` blob 
“
); 
} 
  code>  pre> 
 
 

错误 strong> 错误更新记录:Champ'level'inconnu dans 字段列表 p>

我做错了什么。 p> div>

I have altered the code under for loop as all the columns are VARCHARS and using backtick worked out.

$col_arr = array( 
    'proj_desc', 
    'companyname', 
    'text_color', 
    'citation_color', 
    'bg_color', 
    'border_color', 
    'ratingsformat', 
    'version', 
    'rating', 
    'customratings', 
    'speed', 
    'pagination', 
    'global_option'
);

foreach ($col_arr as  $column_field) {
    $col = mysqli_query($link, "SELECT `$column_field` FROM `setting`");
    if(!$col){
        mysqli_query($link, "ALTER TABLE  `setting`
            ADD  `$column_field` VARCHAR( 255 )"
        );
    }
}

Let me know if this code is correct.