mysql类无法实例化的问题的问题

/**** db是个抽象类
conf类已经测试过可以使用
******/
class mysql extends db{
private $conf = array();
private static $ins = null;
private $conn = null;
//连接数据库的函数实现 protected前缀不能通过new来获取实例
protected function __construct(){
$this->conf = conf::getinstance();
// print_r($this->conf);
// var_dump($this->conf);
// echo ”;
$this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);
// $this->connect(‘localhost’,’root’,’111111′);
$this->select_db($this->conf->db);
$this->setchar($this->conf->char);
}
public function __destruct(){

}
//单例模式 获取自己实例的方法
public static function getins(){
if(!(self::$ins instanceof self)){
self::$ins = new self();
}
return self::$ins;
}
//连接数据库的抽象类 $h服务器 $u用户名 $p密码 return bool
public function connect($h,$u,$p){
$this->conn = mysql_connect($h,$u,$p);
if(!$this->conn){
$err = new exception(‘连接失败’);
throw $err;
}
}
protected function select_db($db){
$sql = ‘use’.$db;
$this->query($sql);
}
protected function setchar($char){
$sql = ‘set names’.$char;
return $this->query($sql);
}
//发送查询的抽象类 return mixed bool/resource
public function query($sql){
$rs = mysql_query($sql,$this->conn);
logstore::writelog($sql);
return $rs;
}

}

打印出来$this->conf如下图:

mysql类无法实例化的问题的问题0

为什么提示$this->connect(null,null,null)

回复讨论(解决方案)

mysql类无法实例化的问题的问题1

显然用户名和口令没有传递到位

mysql类无法实例化的问题的问题2

显然用户名和口令没有传递到位

单独打印

$this->conf->host ,

$this->conf->user,

$this->conf->pwd

结果

localhost,

root,

111111

我用cmd这个用户名密码可以登陆的

不知道哪里的问题

mysql类无法实例化的问题的问题3

显然用户名和口令没有传递到位

我在$this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);

之前插入:

var_dump($this->conf->host);

echo ”;

结果如下图:

mysql类无法实例化的问题的问题4

mysql类无法实例化的问题的问题5

错误信息都贴过了,再贴也没有意义

用户名的部分是空的,连这个你都看不见?

public function connect($h,$u,$p){

你可以在这里打印 $h,$u,$p 看看

$this->conn = mysql_connect($h,$u,$p);

贴的代码和打印结果对应不上。所以不知道你具体错在哪里,但是账号密码没传过去但是host传过去了。自己找原因吧。

Posted in 未分类