2015-09-05 154 views
0

以下函數用於php中的登錄頁面。它顯示一個錯誤嘗試在PHP PDO中獲取非對象的屬性

「試圖讓....非對象的財產」

function Validate($userName,$encrypted_password,$dbh) 
    { 
     try{ 
      echo ("".$userName.""); 
      echo ("".$encrypted_password.""); 
      $sql = "SELECT USERCODE,PWD FROM GUSER WHERE USERCODE = :uname AND PWD = :pwd"; 
      echo $sql->error; 
      $query = $dbh->prepare($sql); 
      $query->bindParam(':uname',$userName,PDO::PARAM_STR); 
      $query->bindParam(':pwd',$encrypted_password,PDO::PARAM_STR); 
      $query->execute(); 
      $rows = $query->fetch(PDO::FETCH_NUM); 
      echo ("".$rows.""); 
      if($rows > 0){ 
       echo "Login Successfull"; 
       header("location: home.php"); 
      } 
      else{ 
       $errmsg_arr[] = 'Username and Password are not found'; 
       $errflag = true; 
      } 
      if($errflag) { 
      $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
      session_write_close(); 
      echo "Closed"; 
      exit(); 
      } 
     }     
     catch(PDOException $e) { 
      echo 'ERROR: ' . $e->getMessage(); 
     } 
     //return $getValue; 

    } 

誰能幫我..我是新來的PHP。請幫助提前

感謝

+0

感謝@Saty修復代碼。你的SQL查詢是錯誤的。 – Jimmy

+2

你能解釋一下查詢中有什麼錯誤嗎?@ Jimmy – Saty

+0

我的查詢有什麼問題? –

回答

0

字符串不是一個對象:

​​

$sqlstring所以它沒有像error這樣的屬性,並且您不能像$sql->error那樣訪問它,因爲它是原始值類型。

你要刪除這條線:

echo $sql->error; 

要PDO處理SQL錯誤,你必須使用try-catch結構,在PHP。 See this answer for more information about handling errors in PDO.

+0

它唯一的打印在最後if語句中指定的「Closed」。我的查詢有任何錯誤? –

+0

你必須刪除一行:'echo $ sql-> error;'。這樣做和錯誤是固定的。我刪除了 –

+0

。然後我在瀏覽器中運行我的代碼。其印刷「sysman 1594封閉」只。 –

相關問題