2010-05-27 6 views
0
$sql = "UPDATE tblprofile SET name = '$membername' , 
             f_h_name = '$fathername', 
             maritalS = '$mstatus' , 
             dob = '$dob' , 
             occupation = '$occupation' , 
             nominee = '$nominee' , 
             address1 = '$address1' , 
             address2 = '$address2', 
             city = '$city', 
             district = '$district', 
             state = '$state', 
             pin = '$areapin', 
             mobile = '$mobileno', 
             email = '$email', 
             PANno = '$panno', 
             bankname = '$bankname', 
             branch = '$branch', 
             accountno = '$accountno' 
             WHERE userId = '$_SESSION['UserId']' "; //line 212 
    if(mysql_query($sql)) 
    { 
     echo "Updation Done."; 
    } 

Ошибка приходит в браузере:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\303\saveEditProfile.php on line 212Ошибка при обновлении данных в PHP

+4

Мне нравится слово «Обновление» :) – halfdan

+0

@halfdan Почему вам не понравился вопрос. Ответьте на это. – nectar

ответ

2

Ваш variable reference $_SESSION['UserId'] inside the double quoted string is not allowed. Вы либо должны написать $_SESSION[UserId] (не цитируя ключ):

"… WHERE userId = '$_SESSION[UserId]' " 

Или использовать фигурные скобки синтаксиса {$_SESSION['UserId']}:

"… WHERE userId = '{$_SESSION['UserId']}' " 

Но я скорее предлагаю вам использовать параметризованные функции для построения запроса (например, sprintf) или Подготовленные утверждения, чтобы вы могли снова защитить себя от SQL-инъекций.

+0

Что такое SQL-инъекции? – nectar

+0

@nectar: ​​http://en.wikipedia.org/wiki/Sql_injection –

+0

@nectar: ​​SQL Injection - это инъекция кода, в которой злоумышленник использует вредоносный ввод, который, если он помещен в оператор SQL, приводит к выражению SQL, которое ведет себя иначе, чем предполагал автор. Взгляните на статью в Википедии по адресу http://en.wikipedia.org/wiki/SQL_injection, чтобы узнать подробности. – Gumbo

1

Попробуйте это:

$sql = "UPDATE tblprofile SET name = '$membername' , 
            f_h_name = '$fathername', 
            maritalS = '$mstatus' , 
            dob = '$dob' , 
            occupation = '$occupation' , 
            nominee = '$nominee' , 
            address1 = '$address1' , 
            address2 = '$address2', 
            city = '$city', 
            district = '$district', 
            state = '$state', 
            pin = '$areapin', 
            mobile = '$mobileno', 
            email = '$email', 
            PANno = '$panno', 
            bankname = '$bankname', 
            branch = '$branch', 
            accountno = '$accountno' 
            WHERE userId = '{$_SESSION['UserId']}' "; //line 212 

я настоятельно рекомендую вам взглянуть на php.net/sprintf, например:

$sql = sprintf("SELECT id FROM table WHERE name = '%s'", $name); 
0

Fast хак получить эту работу, это удалить одиночные qoutes в прошлом строка запроса SQL, например:

WHERE userId = '$_SESSION[UserId]' "; 
0

Попробуйте изменить это:

$_SESSION[UserId] 
Смежные вопросы