2013-04-15 52 views
-1

我接收PHP錯誤:PHP分析錯誤:「在意外的T_ENCAPSED和WHITESPACE上收到解析錯誤。」

Parse Error received on unexpected T_ENCAPSED AND WHITESPACE. 

線:($insert .= "($POST...)是一個是生成錯誤。

(string)$insert; 
if(is_array($_POST['Year'])) 
{ 
    foreach($_POST['Year'] as $k=>$v) 
    { 
     //the following line returns the error 
     $insert .= "($_POST['Name'][$k], $_POST['One'][$k], $_POST['Two'][$k], $_POST['Four'][$k], $_POST['Eight'][$k], $_POST['Fifteen'][$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['One'], $_POST['Two'], $_POST['Four'], $_POST['Eight'], $_POST['Fifteen'], $_POST['LJump'], $_POST['HJump'], $_POST['Shotputt'], $_POST['Discuss'], $_POST['Javelin'], $_POST['Date'], $_POST['Year'])"; 
} 

$sql="INSERT INTO results_main 
(Name, One, Two, Four, Eight, Fifteen, LJump, HJump, Shotputt, Discuss, Javelin, Date, Year) 
VALUES 
".$insert; 

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

如果您打算低估我的問題,您是否至少可以提供某種反饋? –

+0

在第一個'$ insert。='中有一個'dot',第二個沒有。刪除第一個點,並將其放在第二個'$ insert ='中。 –

+0

對不起,我需要把'點'放在哪裏? –

回答

7

基本PHP語法:你不能用一個雙引號字符串內引用數組鍵:

$x = "$array['key']"; 
      ^---^--- wrong 

它應該不包括:

$x = "{$array['key']}"; 
     ^--   ^--- note the braces 
or 
$x = "$array[key]"; 
      ^--^-- note lack of ' quotes 

你也敞開乞討爲SQL injection attack。所以在你做任何OTHER編碼之前瞭解一下。

+0

我已經實現了這一點,仍然收到相同的錯誤。爲了確認,我已經刪除了Year數組鍵的引號。 –

+0

您必須遠程使用EVERY $ _POST變量中的所有引用鍵,或者至少使用'{}'表示法來封裝它們。 –

+0

感謝您對SQL注入的建議,但是我的知識非常老,而且這個應用程序將在一個沒有外部訪問的局域網上,所以它現在不是優先級,部署就是。我會嘗試你現在建議的 –