我之前对此进行了编码,但它无效。
我意识到我可以做得更简单,但我正在尝试使用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用户没有密码,所以......
有什么想法吗?
答案 0 :(得分:1)
好的,问题是永远不会设置主机,用户和密码。查看database
构造函数。您只需设置配置。
以某种方式设置私有database
属性,或使用openCon()
中的配置对象。
或者,甚至更好,只是废弃config
对象。现在它没有重要作用。只需更改database
构造函数,如下所示,并完成它:
function __construct($host, $user, $pass) {
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
}
最后,如果__destruct()
方法没有做任何事情,那么您不需要包含它。
答案 1 :(得分:1)
只要您需要更改数据库类,您的每件事都是正确的。您将$ 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());
答案 2 :(得分:0)
尝试使用cmd导航到您的mysql目录 在xampp中它的“C:\ xampp \ mysql \ bin”
然后输入 “mysql -u root”并检查您是否正在访问