2016-04-09 37 views
-1

私のプロジェクトのテーブルの行を更新したい、私はここがどこか見た構文をコピーするよ、私は更新しようとするとApplicantIDは$ _SESSION [「ID」]に等しい私の問題が来ると思います。 私はここに構文エラー、予期しない '"'、識別子(T_STRING)または変数(T_VARIABLE)または数値(T_NUM_STRING)がC:...の行22にある

Parse error: syntax error, unexpected '"', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\...\InsertPData.php on line 22 

があり、このエラーが出ますPHP側のSQL:

<?php 
     include_once'dbconnect.php'; 
     session_start(); 

     function INSERT() 
     { 
      $Name=$_POST['name']; 
      $Relation=$_POST['Relation']; 
      $Email=$_POST['Email']; 
      $Address=$_POST['Address']; 
      $Postcode=$_POST['Postcode']; 
      $Mobile_Number=$_POST['Mobile_Number']; 
      $Home_Number=$_POST['Home_Number']; 
      $INSERT="UPDATE Applicants 
      SET ParentName='$Name', 
      Relationtoapplicant='$Relation', 
      ParentEmail='$Email', 
      ParentAddress='$Address', 
      ParentPostcode='$Postcode', 
      ParentMobile='$Mobile_Number', 
      ParentHome='$Home_Number', 
      WHERE ApplicantID=$_SESSION["ID"] "; #THIS IS LINE 22 

      $data=mysql_query($INSERT) or die(mysql_error()); 
      if($data) 
      { 
       echo "Parents/Gauridan details hav been entered"; 
      } 
      else print "error"; 
     } 

     INSERT() 
     ?> 

私はすでにこれに対する解決策を探していますが、ユーザーがセッションのものを使用している場所で何かを見つけました。ありがとうございました。

+0

ここで強調表示されている構文をよく見ていると、エラーが発生します。 – Sirko

答えて

0

これは、構文強調表示を持つIDEが役立つ理由です。 StackOverflowのは、同様にして、実際のコードブロックにシンタックスハイライトは、すでにあなたのコードに基づいて答えを与える使用しています。

$INSERT="UPDATE Applicants 
WHERE ApplicantID=$_SESSION["ID"] "; 

IDではなく、暗赤色の突然黒であるかを参照してください?それはあなたがそこで文字列を終わらせるためです。二重引用符はエスケープするかのように、単一引用符に置き換える必要があり、次のいずれか

$INSERT="UPDATE Applicants 
WHERE ApplicantID=$_SESSION[\"ID\"] "; 

それとも

$INSERT="UPDATE Applicants 
WHERE ApplicantID=$_SESSION['ID'] "; 

はIDビットは暗赤色のままにしておきますか?これはあなたの文字列が突然終了しないためです。

また、をください。mysql_の機能を使用しないでください。 2013年以降非推奨になっており、現在でもPHPの一部でさえもです。 PHPを最新のバージョンに更新すると、このコードは機能しません。さらに、このコードは、SQLインジェクション攻撃に対しての脆弱性があります。

Why shouldn't I use mysql_* functions in PHP?およびHow can I prevent SQL-injection in PHP?も参照してください。

+0

ありがとうございました。主な問題は、実際にセッション['ID']があるページから別のページに転送されていないことです。私は "WHERE ApplicantID = 1524;"のようなものをテストしていたはずです。いずれにしても、ありがとうございます。感謝しています。 – srhgrsdhfdh

+0

@srhgrsdhfdhよろしくお願いします。しかし、また、私の答えの下の部分をお読みください、あなたのコードは非常に時代遅れであり、簡単にあなたのデータベースやサーバーにハックするために悪用することができます。実際に現代の基準にアップグレードするべきです。詳細は、提供されたリンクを参照してください。 – Oldskool

+0

もう一度男、学校のプロジェクトのために、本当に真剣に使用されることはありません。 – srhgrsdhfdh

関連する問題