2012-06-23 27 views
1

我需要恢復某個查詢的行數,但它使我這個錯誤試圖讓非對象錯誤的性質

試圖讓非對象的屬性在C:\ XAMPP \ htdocs中\樣本\包括\ CheckUsername.php上線18

這裏是我的代碼:

<?php 
     class Db_CheckUsername{ 
      protected $_conn; 
      protected $_username; 
      protected $_errors = array(); 

      public function __construct($username,$conn){ 
       $this->_username = $username; 
       $this->_conn = $conn; 
      } 

      public function isUsernameAvailable(){ 
       $sql = "SELECT "; 
       $sql .= "FROM accounts "; 
       $sql .= "WHERE username = {$this->_username}"; 

       $result = $this->_conn->query($sql); 
       $numRows = $result->num_rows; 

       if($numRows == 0){ 
        return true; 
       }else{ 
        return false; 
       } 
      } 
     } 
    ?> 

我該如何解決這個問題?

+0

哪一個正好是'18號線'? – Havelock

+0

確保'_con'實際上包含有效的連接對象。你可以通過type-hinting構造函數來實現:'public function __construct($ username,MySQLi $ conn){' –

+0

@Havelock:'$ numRows = $ result-> num_rows;' –

回答

4
SELECT FROM accounts 

可能是無效的。你可能想要SELECT * FROMSELECT 1 FROM

+1

+1發現! – Havelock

+0

此外,用戶名未被''包圍。該值應該被轉義(請參閱mysql_real_escape_string)。 –

+0

我已經添加了,但它仍然返回一個錯誤。 – user962206

2

您不在查詢中檢查錯誤。如果發生錯誤,$result將是錯誤的,情況正是如此。您的查詢中有語法錯誤。

4

我不會給你解決方案,因爲我認爲你需要開發一些基本的故障排除技巧。

  • 檢查您的數據。$result包含哪些數據?請與var_dump聯繫。
  • 您的查詢正確嗎?打印查詢以查看它。將確切的查詢複製並粘貼到SQL提示符中,查看它是否正常工作。