调用函数类php

调用函数类php,php,class,function,return,Php,Class,Function,Return,我创建了一个类,该类有两个函数,用于处理与数据库的连接并进行查询。其中一个呼叫另一个。 这是我的代码,但它给了我错误。。。。确定调用函数时出错了。 有人能帮我吗 class DB{ public function connect(){ session_start(); include_once('libs/Smarty.class.php'); $smarty = new Smarty(); $smarty->setTemplateDir('templat

我创建了一个类,该类有两个函数,用于处理与数据库的连接并进行查询。其中一个呼叫另一个。 这是我的代码,但它给了我错误。。。。确定调用函数时出错了。 有人能帮我吗

class DB{

public function connect(){
    session_start();
    include_once('libs/Smarty.class.php');
    $smarty = new Smarty();
    $smarty->setTemplateDir('templates/');
    $smarty->setCompileDir('templates_c/');
    $smarty->setConfigDir('configs/');
    $smarty->setCacheDir('cache/');

    $host = "localhost";
    $user = "root";
    $pass = "pass";
    $tablename = "table";

    return $connect = mysql_connect($host, $user, $pass);
    mysql_select_db($tablename, $connect) or die(mysql_error());
}

public function do_query($query){
    echo DB::connect();
     if(mysql_query($query,DB::connect())){
         $message="Annuncio inserito correttamente!!";
         echo $message;
     }else{
         $message="Error insert data into DB: ";
         echo $message. mysql_error();
     }
}

}

退回$connect。。。但是您可能希望返回mysql\u select\u db

$connect = mysql_connect($host, $user, $pass);
return mysql_select_db($tablename, $connect) or die(mysql_error());
编辑:

我的回答是“肯定出了什么问题……”,因为最后一条语句没有执行是一个明显的错误

但是如果你想使用连接,你需要返回它,当然

$connect = mysql_connect($host, $user, $pass);
mysql_select_db($tablename, $connect) or die(mysql_error());
return $connect;

您返回$connect。。。但是您可能希望返回mysql\u select\u db

$connect = mysql_connect($host, $user, $pass);
return mysql_select_db($tablename, $connect) or die(mysql_error());
编辑:

我的回答是“肯定出了什么问题……”,因为最后一条语句没有执行是一个明显的错误

但是如果你想使用连接,你需要返回它,当然

$connect = mysql_connect($host, $user, $pass);
mysql_select_db($tablename, $connect) or die(mysql_error());
return $connect;

存在一些设计错误,模板逻辑应该在数据库连接方法之外。除此之外,还需要进行以下更改

 class DB {

    private $host = "localhost";
    private $user = "root";
    private $pass = "pass";
    private $tablename = "table";
    private $con = null; //change here

public function connect(){
    $this->con = $connect = mysql_connect($this->host, $this->user, $this->pass); change here
    mysql_select_db($this->tablename, $this->con) or die(mysql_error()); //should be database name
 }

public function do_query($query){
 if(mysql_query($query,$this->con)){ //notice the change in this line 
         $message="Annuncio inserito correttamente!!";
         echo $message;
     }else{
         $message="Error insert data into DB: ";
         echo $message. mysql_error();
     }
}

存在一些设计错误,模板逻辑应该在数据库连接方法之外。除此之外,还需要进行以下更改

 class DB {

    private $host = "localhost";
    private $user = "root";
    private $pass = "pass";
    private $tablename = "table";
    private $con = null; //change here

public function connect(){
    $this->con = $connect = mysql_connect($this->host, $this->user, $this->pass); change here
    mysql_select_db($this->tablename, $this->con) or die(mysql_error()); //should be database name
 }

public function do_query($query){
 if(mysql_query($query,$this->con)){ //notice the change in this line 
         $message="Annuncio inserito correttamente!!";
         echo $message;
     }else{
         $message="Error insert data into DB: ";
         echo $message. mysql_error();
     }
}

您正在调用DB::connect(),这是一个静态函数,您需要将其声明为静态函数,例如

public static function connect(){

}
如果你想在课堂上打电话,你必须像这样做

Self::connect();

您正在调用DB::connect(),这是一个静态函数,您需要将其声明为静态函数,例如

public static function connect(){

}
如果你想在课堂上打电话,你必须像这样做

Self::connect();

首先,放置在
return
之后的代码不会执行。这是从未使用过的:

mysql_select_db($tablename, $connect) or die(mysql_error());
因此,永远不会选择数据库

其次,每个查询要连接到数据库两次,而整个http请求应该连接一次


接下来,您使用的是
mysql
lib,而较新的是
mysqli
。您也可以尝试使用PDO包装器。

首先,放置在
返回之后的代码不会执行。这是从未使用过的:

mysql_select_db($tablename, $connect) or die(mysql_error());
因此,永远不会选择数据库

其次,每个查询要连接到数据库两次,而整个http请求应该连接一次


接下来,您使用的是
mysql
lib,而较新的是
mysqli
。您也可以尝试使用PDO包装器。

如果使用静态类,请尝试使用self::connect如果使用静态类,请尝试使用self::connect MySQL\u select\u db不会返回connection@DevZer0,他正在纠正OP犯的一个错误。OP正在返回连接,但从未获得选择数据库的机会。它无法解决问题。它允许函数
connect()
选择数据库。它不再依赖mysql连接了……不管mysql\u select\u db是否返回流,这都无关紧要。不需要。这是命令,不是连接。它将返回True/false。mysql\u select\u db不返回connection@DevZer0,他正在纠正OP犯的一个错误。OP正在返回连接,但从未获得选择数据库的机会。它无法解决问题。它允许函数
connect()
选择数据库。它不再依赖mysql连接了……不管mysql\u select\u db是否返回流,这都无关紧要。不需要。这是命令,不是连接。它将返回True/false。这不是问题所在。您可以在PHP中静态调用动态方法。请自己测试它,看它是否出错。这不是问题所在。您可以在PHP中静态调用动态方法。请自己测试它,看它是否出错