2010-05-27 3 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."; 
    } 

오류는 브라우저에서 제공 : 귀하의 variable reference $_SESSION['UserId'] inside the double quoted string is not allowedParse 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오류가

+4

나는 "Updation"이라는 단어를 좋아한다. :) – halfdan

+0

@halfdan 왜 그런 질문을 좋아하지 않았다. 대답했다. – nectar

답변

2

합니다. (

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

그러나 나는 오히려 당신이 당신의 쿼리를 작성하는 매개 변수 기능을 사용하는 것이 좋습니다 :

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

또는 중괄호 구문 {$_SESSION['UserId']}를 사용 : 당신은 (키를 인용하지 않고) $_SESSION[UserId]를 작성해야 하나 sprintf과 같은) 또는 Prepared Statements를 사용하면 SQL Injections를 다시 보호 할 수 있습니다.

+0

SQL 인젝션이란 무엇입니까? – nectar

+0

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

+0

@nectar : SQL 인젝션은 공격자가 SQL 문에 입력 한 경우 공격자가 악의적 인 입력을 사용하여 SQL 문을 생성하는 코드 삽입 공격입니다. 저자가 의도 한 것과 다르게 행동합니다. http://en.wikipedia.org/wiki/SQL_injection의 위키 피 디아 (Wikipedia) 기사를 보시면 자세한 내용을 볼 수 있습니다. – 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

빠른 해킹이 작업을 진행 할 수있다 마지막에 하나의 qoutes을 제거하기 위해 이 같은 SQL 쿼리 라인 :

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

이로 변경해보십시오 :

$_SESSION[UserId]