需要一些帮助调试这个PHP


Need some help debugging this PHP

我稍早编写了这个代码,但是它不工作。

我意识到我可以做得更简单,但我正在尝试使用OOP。

下面是代码。

database.class.php

<?php
class config {
    public $host;
    public $user;
    public $pass;
    function __construct($host=NULL,$user=NULL,$pass=NULL) {
        $this->host = $host;
        $this->user = $user;
        $this->pass = $pass;
    }
    function __destruct() {}
}
class database {
    private $host;
    private $user;
    private $pass;
    private $config;
    function __construct($config) {
        $this->config = $config;
    }
    function __destruct() {}
    public function openCon() {
        mysql_connect($this->host,$this->user,$this->pass);
        if (mysql_errno()) {
            printf('Failed to connect: %s', mysql_error());
        } else {
            echo 'Connected to DB successfully.<br/><br/>';
        }
    }
    public function closeCon() {
        try {
            mysql_close();
            echo 'Successfully closed connection.<br/><br/>';
        } catch (exception $e) {
            echo $e;
        }
    }
}
?>

index . php

<?php
    include('db.class.php');
    $con = new config('localhost','root','');
    $etc = new database($con);
    $etc->openCon();
    mysql_select_db('tester') or die(mysql_error());
    $query1 = mysql_query('SELECT * FROM person') or die(mysql_error());
    $rows = mysql_fetch_array($query1) or die(mysql_error());
        echo 'First: ' . $rows['First'];
        echo 'Age:'    . $rows['Age'];
    $etc->closeCon();
?>

我敢肯定这里面有明显的错误。有人能帮我找到并修理它们吗?

显示:用户" @'localhost'访问数据库'tester'被拒绝

不知道为什么。

我指定root作为用户,但是返回的是"作为我请求使用的用户"。

它使主机和数据库正确。

我的本地root用户没有密码,所以…

任何想法?

好的,问题是主机、用户和密码从来没有设置过。查看database构造函数。

要么以某种方式设置私有database属性,要么使用openCon()中的配置对象。

或者,更好的是,直接废弃config对象。目前它还没有发挥重要作用。只需像下面这样更改database构造函数,就可以完成它了:

function __construct($host, $user, $pass) {
    $this->host = $host;
    $this->user = $user;
    $this->pass = $pass;
}

最后,如果__destruct()方法不做任何事情,那么您不需要包含它

你的一切都是正确的,只是你需要改变你的数据库类。您将$config作为对象传递给数据库类的构造函数,因此要从该对象访问变量,您只需做一些更改。应该是

 class database {
private $host;
private $user;
private $pass;
private $config;
public $Connectionlink;
function __construct($config) {
    $this->host = $config->host;
    $this->user = $config->user;
    $this->pass = $config->pass;
}
 // function __destruct() {} as your destruct function doing noting so you need not to include this.
public function openCon() {
   $this->Connectionlink= mysql_connect($this->host,$this->user,$this->pass);
    if (mysql_errno()) {
        printf('Failed to connect: %s', mysql_error());
    } else {
        echo 'Connected to DB successfully.<br/><br/>';
    }
}
public function closeCon() {
    try {
        mysql_close();
        echo 'Successfully closed connection.<br/><br/>';
    } catch (exception $e) {
        echo $e;
    }
}
}

mysql_select_db需要两个参数,所以应该是

  mysql_select_db('tester', $etc->Connectionlink) or die(mysql_error());

尝试使用CMD导航到mysql目录在xampp的"C:'xampp'mysql'bin"

,然后键入"mysql -u root"并检查是否可以访问