2016-08-03 56 views
0

中的整數的成員函數query()我無法調用類__construct中的函數。PHP - 在對象中調用函數會導致錯誤:'調用'

功能:

function dbcom_query($con,$query) { 
    if (!$mysqli_result = $con->query($query)) dbcom_error(); 
    return $mysqli_result; 
} 

和類:

class User { 

    public $id; 
    public $con; 
    public $full_name; 
    public $disp_name; 

    public function __construct($id,$con) { 
     $query = "SELECT * FROM user_1;"; 
     $result = dbcom_query($con, $query); 
     if ($result) { 
      $usr_array = mysqli_fetch_assoc($result); 
      $this->full_name = $usr_array['full_name']; 
      $this->disp_name = $usr_array['disp_name']; 
     } 
    } 
} 
  • 我把用戶_ 查詢,以減輕有關如何查詢正在構建任何疑問。否則,它會是$ id。

但後來我得到這個錯誤,不知道什麼是要去:在...「X」線

調用一個成員函數查詢()整數

在哪裏x'-line是:$query = "SELECT * FROM user_1;";

而且,如果我在任何對象之外調用此函數dbcom_query(),它將正常工作。

編輯:哇,我有些慚愧......我打電話給$user = new User($con,$id)" - 錯誤的參數順序。多麼愚蠢的錯誤。對不起大家!

+0

$ query =「SELECT * FROM'user_1'」; –

+0

作用域,作用域,作用域 – RiggsFolly

+0

@Anant';'是不必要的,但我不認爲它會導致錯誤 – RiggsFolly

回答

0

當您在類中調用$ con時,它是一個整數。確保您正確地將值傳遞到類中。如果您想爲其添加錯誤處理,則可以將__constructor函數重寫爲如下所示。只需添加類名(導入命名空間,如果有的話),像這樣:

public function __construct($id, ConnectionClass $con) { 
+0

謝謝@安德魯。這確實是一個整數,我在創建對象時弄亂了參數順序! –

0

我想你好想在__construct方法的一部分,節省了地方$ CON值內提供的$ CON對象:

public function __construct($id,$con) { 
     $this->con = $con; 
     $query = "SELECT * FROM user_1;"; 
     $result = dbcom_query($con, $query); 

     if ($result) { 
      $usr_array = mysqli_fetch_assoc($result); 
      $this->full_name = $usr_array['full_name']; 
      $this->disp_name = $usr_array['disp_name']; 
     } 

但是真正的問題可能來自您創建對象User的方式。請提供您的代碼中的「新用戶($ foo,$ bar)」部分來查看這一點。

更一般地,我建議你定義:

global $con; 
在開始你的腳本

所以這個變量將可以在幾乎任何地方訪問。

Massive edit,sorry :)

+0

感謝@technico的幫助。當我打算讓'new User'向你展示時,我看到它有參數倒置($ con,$ id)。 –

+0

不錯:)對於我們兩個人來說,更多一步到程序員的天堂! – technico

相關問題