2016-04-09 50 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 

這裏在一邊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

相關問題