【问题标题】:MySql - Alter Table and add column if not existsMySql - 如果不存在则更改表并添加列
【发布时间】:2016-02-29 11:33:05
【问题描述】:

我有一个 mysql 查询,我通过更改表向表中添加列,但它抛出错误 Error updating record: Champ 'rating' inconnu dans field list

现有表格列

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)

查询

$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
        "
    );
}

错误 更新记录时出错:Champ 'rating' inconnu dans field list

我做错了什么。

【问题讨论】:

  • quotes 换成table name 改用backtick!!在global_option FROM 'setting'")
  • 为什么在选择查询中引用设置?从“设置”中删除单引号到设置,请仔细检查评级的拼写:) 它应该是评级 iguess。
  • 为什么要反转结果 (!$col),请检查评级拼写。我的意思是在查询中除了语法查询似乎没有任何问题
  • 评分是很久以前的一个错字,我现在无法更正。感谢您的意见,我会尽快通知您
  • 还是同样的错误。

标签: php jquery database mysqli


【解决方案1】:

我已经更改了 for 循环下的代码,因为所有列都是 VARCHARS 并且使用反引号解决了。

$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 )"
        );
    }
}

让我知道这段代码是否正确。

【讨论】:

    猜你喜欢
    • 2014-08-25
    • 2020-11-25
    • 1970-01-01
    • 2010-11-01
    • 2012-06-16
    • 2014-07-04
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多