解析错误:语法错误,意外T_VARIABLE - 分号

问题描述:

我的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

你打开这里的字符串:

"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

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

所以,你错过了一个连接符.

您需要更改

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

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

我已经看到了这个错误

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

,你应该用这样的方式

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

也已经打开两个花括号但收盘之一。

敢肯定你需要一个连接符的位置:

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

或者这样:

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

你$ 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]}'"; 

两件事;

  • $ _SESSION [USER_ID]在一个字符串,它是完整与"报价的中间引述"。无论如何,破损的WHERE部分,在INSERT中有点错位,可以完全删除。

  • 你的for循环没有太多的工作;

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

在端部分号使得它的空循环。删除它,事情应该更好地工作。