2016-11-05 8 views
-1

私のコードに何が問題なのか分かりません。 $ sqlUPDATEUsernameの前の11行目に表示されます。私はユーザー名とパスワードの変更を行っています。予期しないT_ENCAPSED_AND_WHITESPACE、T_STRINGまたはT_VARIABLEまたはT_NUM_STRINGを予期しない構文エラー

$errorEmessage = '&nbsp'; 
     $NEWusername = $_POST['Nusername']; 
     $CONusername = $_POST['Conusername']; 
     $NEWpassword = $_POST['Npassword']; 
     $CONpassword = $_POST['Conpassword']; 

     $sqlUPDATEUsername = "UPDATE user_accounts SET USERNAME = '$NEWusername' WHERE EMPOYEE_ID = $_SESSION['ID']"; 
     $sqlCheckUsername = "SELECT * FROM user_accounts WHERE userID('EMPOYEE_ID') = $_SESSION['ID']"; 
     $RunSqlCU = mysql_query($sqlCheckUsername); 
     $row = mysql_fetch_array($RunSqlCU); 
+0

コードにはかなり間違いがあります。まずは、mysql_ *関数をもう使用しないでください。彼らは今では2年以上非難されており、あなたに広範なSQLインジェクションを残しています。別の問題は、変数を一重引用符で囲むことです。つまり、変数の値を使用する代わりに、変数をリテラルテキストとして使用します。また、 'userID( 'EMPOYEE_ID')'?私はこれがmysqlの中で有効なカラム名ではないと確信しています。 – icecub

+0

あなたは私にどのように教えることができますか?私は何を使うべきですか? – vdedote

+0

私はすでにEMPOYEE_IDの部分を固定しています – vdedote

答えて

-1

あなたはユーザー入力を消毒する必要があります。 外部コード内に文字列を埋め込むときは、その言語の規則に従って文字列をエスケープする必要があります。たとえば、あるSQLターゲティングMySqlに文字列を埋め込む場合、この目的のためにMySqlの関数で文字列をエスケープする必要があります。(mysql_real_escape_string)

使用

$NEWusername = mysql_real_escape_string($_POST['Nusername']); 

別の例は、HTMLである:あなたがHTMLマークアップ内の文字列を埋め込む場合は、htmlspecialcharsでエスケープしなければなりません。これは、すべての単一エコーまたはプリントステートメントがhtmlspecialcharsを使用する必要があることを意味します。

+0

1)質問には答えられない回答を使用しないでください**!代わりにコメントを使用してください! 2)他人に助けにならない何かのために機能を使用するようにアドバイスしないでください。 – icecub

+0

どのように私のsql_real_escape_stringを使用できますか? – vdedote

+0

'$ NEWusername = mysql_real_escape_string($ _ POST ['Nusername']); ' – mahethekiller

関連する問題