2013-12-19 69 views
0

由於某種原因,我沒有從這個代碼得到輸出。特別是從這個if語句中: 我插入了一個帶有測試詞的html標記,但它從未出現在輸出中。 我修正了「選擇」錯字..仍然得到相同的結果..沒有輸出..我認爲問題是從這個聲明。PHP的SQL沒有得到輸出

$db = new PDO("mysql:dbname=university", "root", ""); 

我插入另一個測試短語前右它 - 成功,另外一個它之後 - 沒有輸出

 if($sel=="getinfo"){ 
        try { 
        $db = new PDO("mysql:dbname=university", "root", ""); 
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        $rows = $db->exec("SEEELECT * FROM fminformationtable WHERE FM_ID = '$_POST[iden]'"); 
        ?> 
        test 
        <?php 
        } 

這是全功能

if($sel=="addnew"){ 
    try { 
       $db = new PDO("mysql:dbname=university", "root", ""); 
       $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $rows=$db->query("INSERT INTO fminformationtable 
       VALUES('$_POST[iden]','$_POST[lname]','$_POST[fname]','$_POST[office]','$_POST[ext]','$_POST[hphone]','$_POST[mobile]','$_POST[address]','$_POST[email]','$_POST[syear]','$_POST[tyear]','$_POST[ldegree]','$_POST[ofrom]','$_POST[dyear]','$_POST[rinterest]')"); 

      } 
      catch (PDOException $ex) { 
      ?> 
      <p>Your information has been submitted! </p> 
      <?php 
      } 
      if($sel=="update"){ 


       try { 
        $db = new PDO("mysql:dbname=university", "root", ""); 
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 



        $rows=$db->query("UPDATE fminformationtable SET 
        Office=`$_POST[office]`, 
        Extension=`$_POST[ext]`, 
        HomePhone=`$_POST[hphone]', 
        MobilePhone=`$_POST[mobile]`, 
        Adress=`$_POST[address]`, 
        Email=`$_POST[email]`, 
        StartingYear=`$_POST[syear]`, 
        TerminationYrear=`$_POST[tyear]`, 
        LatestDegree=`$_POST[ldegree]`, 
        ObtainedFrom=`$_POST[ofrome]`, 
        DegreeYear=`$_POST[dyear]`, 
        ResearchInterest=`$_POST[rinterest]` 

        "); 

        } 


       catch (PDOException $ex) { 


       } 
     } 
     } 
     if($sel=="delete"){ 
      try { 
        $db = new PDO("mysql:dbname=university", "root", ""); 
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        $rows = $db->exec("DELETE FROM fminformationtable WHERE FM_ID = '$_POST[iden]'"); 


      } 
      catch (PDOException $ex) { 

       } 
     } 

     if($sel=="getinfo"){ 
        try { 
        $db = new PDO("mysql:dbname=university", "root", ""); 
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        $rows = $db->exec("SEEELECT * FROM fminformationtable WHERE FM_ID = '$_POST[iden]'"); 
        ?> 
        test 
        <?php 
        } 
+3

'SEEELECT'可能是一個錯字...它會拋出,這是從未被發現! –

+2

直接在查詢中注入'POST'變量是一個巨大的錯誤。你需要閱讀SQL注入。由於您已經在使用PDO,因此切換到帶有綁定變量的預處理語句很容易。 – jeroen

+0

@EugenRieck,嗯,是的,我相信就是這樣。 – brian

回答

2
  1. 你'使用反引號代替單引號。
  2. 你永遠不會檢查你的函數返回,看看他們是否失敗。
  3. 您正在使用try和空catch塊來簡單地丟棄任何可能有用的信息。例如,導致您的代碼不返回任何數據的錯誤。
  4. SEEEELECT不是MySQL操作。
  5. 不能展開數組索引一個雙引號字符串,除非你使用{$array['index']}

裏面建議:寫在1-3塊行代碼,測試,寫另一塊,測試,和等等。這段代碼看起來像是全部寫入了一個未經測試的鏡頭。

另請參見:yadda yadda SQL注入,參數化查詢等。