调用函数类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中静态调用动态方法。请自己测试它,看它是否出错