字段列表中的未知列1?

时间:2013-04-15 14:17:25

标签: php mysql sql database

完全难倒。获得问题标题中所述的错误,并且不知道为什么。所有我的coloumns都有文本名称,据我所知,在我的代码中没有引用名为“1”的列。我有人稍微修改了这个以帮助我,所以也许这里有一个我不知道的问题。

(string)$insert;
if(is_array($_POST['Year'])){
    foreach($_POST['Year'] as $k=>$v){  
         $insert .= "($_POST['Name'][$k], $_POST['Short'][$k], $_POST['Med'][$k], $_POST['Long'][$k], $_POST['VLong'][$k], $_POST['Extreme'][$k], $_POST['LJump'][$k], $_POST['HJump'][$k], $_POST['Shotputt'][$k], $_POST['Discuss'][$k], $_POST['Javelin'][$k], $_POST['Date'][$k], $_POST['Year'][$k]),"; 
    }
     $insert = substr_replace($insert ,0,-1);
}else{
    $insert .= "($_POST['Name'], $_POST['Short'], $_POST['Med'], $_POST['Long'], $_POST['VLong'], $_POST['Extreme'], $_POST['LJump'], $_POST['HJump'], $_POST['Shotputt'], $_POST['Discuss'], $_POST['Javelin'], $_POST['Date'], $_POST['Year'])"; 
}
$sql="INSERT INTO results_main 
(`Name`, `Short`, `Med`, `Long`, `VLong`, `Extreme`, `LJump`, `HJump`, `Shotputt`, `Discuss`, `Javelin`, `Date`, `Year`)
VALUES 
".$insert;

$result = mysql_query($sql) or die(mysql_error());

// close connection 
mysql_close($conn);

1 个答案:

答案 0 :(得分:1)

原因是因为你用反引号包装了值。如果值是字符串文字,则应使用单引号进行换行。 MySQL将您的值视为列,因为它们周围的反引号。反引号用于标识符而非字符串文字。因此,经过验证的例子看起来像这样,

INSERT INTO tableName (col1, col2, col3)
VALUES ('hello', 'world', 'stack')