2013-04-15 79 views
-1

完全难倒。如问题标题中所述获得错误,但不知道为什么。我所有的coloumns都有文本名称,只要我在我的代码中知道名为“1”的列,就没有参考。我曾经有人稍微修改这个以帮助我,所以也许这里有一个问题我不知道。字段列表中的未知列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); 
+2

我从你以前的问题告诉过你什么是'echo $ sql'的结果? –

+0

我更新了问题,请在echo $ sql输出 下面找到INSERT INTO results_main('Name','Short','Med','Long','VLong','Extreme','LJump','HJump' ,'Shotputt','Discuss','Javelin','Date','Year')VALUES('1','','1','1','1','1','1', ('2','2','2','2','2','1','1','1','1','2013-04-26','10') 2','2','2','2','2','2','2013-04-26','10'); '字段列表'中的未知列'1' –

+0

警告:可能存在SQL注入。请使用参数化查询,而不是此字符串连接。 –

回答

1

原因是因为你用反引号包装值。如果值是字符串文字,值应该用单引号括起来。由于反斜杠,MySQL会将您的值视为列。反引号用于不是字符串文字的标识符。所以这个例子看起来像这样,

INSERT INTO tableName (col1, col2, col3) 
VALUES ('hello', 'world', 'stack') 
相关问题