运行代码时出现以下警告:
call_user_func()要求参数1是有效的回调,找不到函数"db_connect"或函数名无效
代码:
require_once("mo_object.php");
class MO_Model extends MO_Object
{
private $con;
static function db_query($qry)
{
$this->db_connect;
return $qry;
}
function db_connect()
{
$con = mysqli_connect($rconf['host'],$mo_conf['usr'],$mo_conf['password'],$mo_conf['da tabase']);
}
}
为什么我不能正确运行db_connect函数?
谢谢。
如果这是一个类,并且这些函数都在同一个类中,请尝试以下操作:
static function db_query($qry)
{
$this->db_connect();
return $qry;
}
public function db_connect()
{
$con = mysqli_connect($rconf['host'],$mo_conf['usr'],$mo_conf['password'],$mo_conf['database']);
}
为什么使用call_user_func
?直接调用函数并在db_connect
函数中返回连接。当您构建数据库类时,您应该在创建对象时打开连接,并在整个过程中使用该连接。
否则就会有很多无用的数据库连接。如果你使用持久层,比如Doctrine DBAL或Doctrine 2 ORM或任何其他抽象层来获取数据,也许会更好。
有更多的层可以使用数据库,你可以在谷歌上搜索它们。
问题已修复。我把db_connect函数变成了static。
谢谢。