2016-08-03 83 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

相关问题