2012-03-27 278 views
-5

我的IDE期待分號,但我不知道在哪裏! 正是這條線是突出:解析錯誤:語法錯誤,意外T_VARIABLE - 分號

,'$other_writ' WHERE id="$_SESSION[user_id]") 

這是上面的代碼:

if (!empty($_POST['doLanguage']) && $_POST['doLanguage'] == 'Submit') 
{ 
    session_start(); 
    foreach($_POST as $key => $value) 
    $id = "$_SESSION[user_id]"; 

    if(empty($err)) { 
    for($i = 0; $i < count($_POST["other"]); $i++); 
{ 
$native = mysql_real_escape_string($_POST['native'][$i]); 
$other = mysql_real_escape_string($_POST['other'][$i]); 
$other_list = mysql_real_escape_string($_POST['other_list'][$i]); 
$other_read = mysql_real_escape_string($_POST['other_read'][$i]); 
$other_spokint = mysql_real_escape_string($_POST['other_spokint'][$i]); 
$other_spokprod = mysql_real_escape_string($_POST['other_spokprod'][$i]); 
$other_writ = mysql_real_escape_string($_POST['other_writ'][$i]); 
$sql_insert = "INSERT into `language` 
(`native`,`other`,`other_list`,`other_read`, `other_spokint` 
,`other_spokprod`,`other_writ` ) 
VALUES 
('$native','$other','$other_list','$other_read','$other_spokint','$other_spokprod' 
,'$other_writ' WHERE id="$_SESSION[user_id]")"; 

mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());  
} 

感謝您的幫助!

+2

我想你在定義for循環的行上有一個額外的分號:'for($ i = 0; $ i clexmond 2012-03-27 21:31:45

回答

0

你打開這裏的字符串:

"INSERT into `language` ... 

而且它在這裏被關閉:

... WHERE id=" 

PHP在此之後期待分號。你可以通過用單引號(這是SQL標準)替換雙引號來修復它,但是爲什麼你使用WHERE子句和INSERT無論如何?你不需要那個。

剛剛完成你的字符串是這樣的:

... ,'$other_writ')"; 
+0

我正在使用用戶登錄系統,因此此頁面與他們的「我的帳戶」頁面鏈接,因此需要該會話適合此用戶。 – user1257518 2012-03-27 21:43:51

+0

所以你應該在運行查詢之前用PHP檢查用戶。你的'WHERE'完全沒有(甚至可能會破壞查詢)。 – bfavaretto 2012-03-27 21:52:21

+0

對不起,最好的方法是怎麼做的?我是一個新手! – user1257518 2012-03-27 21:57:21

1
,'$other_writ' WHERE id=" . $_SESSION[user_id] . ") 

所以,你錯過了一個連接符.

1

您需要更改

,'$other_writ' WHERE id="$_SESSION[user_id]")"; 

,'$other_writ' WHERE id=" . $_SESSION[user_id] . ")"; 
0

我已經看到了這個錯誤

" WHERE id="$_SESSION[user_id]")"; 

,你應該用這樣的方式

" WHERE id=."$_SESSION[user_id].")"; 

也已經打開兩個花括號但收盤之一。

0

敢肯定你需要一個連接符的位置:

WHERE id=" . $_SESSION[user_id] . ")"; 

或者這樣:

WHERE id={$_SESSION[user_id]})"; 
0

你$ sql_insert字符串應該是這樣的。在WHERE之前注意。

$sql_insert = "INSERT into `language` 
(`native`,`other`,`other_list`,`other_read`, `other_spokint` 
,`other_spokprod`,`other_writ` ) 
VALUES 
('$native','$other','$other_list','$other_read','$other_spokint','$other_spokprod','$other_writ') WHERE id = '{$_SESSION[user_id]}'"; 
1

兩件事;

  • $ _SESSION [USER_ID]在一個字符串,它是完整與"報價的中間引述"。無論如何,破損的WHERE部分,在INSERT中有點錯位,可以完全刪除。

  • 你的for循環沒有太多的工作;

    for($i = 0; $i < count($_POST["other"]); $i++);

在端部分號使得它的空循環。刪除它,事情應該更好地工作。

相關問題