我想要一个包含所有数据库信息(dbname,host,username,password)的通用php文件
但是当我包含页面时,就像index.php一样,我收到了这个错误:
用户'apache'@'localhost'拒绝访问(使用密码:否)
connect.php
<?php
class dbconnect{
private $host = '**';
private $user = '**';
private $pass = '**';
public $con;
function Connect($db = '**') {
if($db=='**'){
$this->host="localhost";
$this->user="**";
$this->pass="**";
$db="**";
}else{
$this->host="**";
$this->user="**";
$this->pass="**";
}
$this->con = mysql_connect($this->host,$this->user,$this->pass);
if (!$this->con)
{
die('Could not connect: ' . mysql_error());
}
$blaa = mysql_select_db($db, $this->con);
mysql_query("SET NAMES UTF8");
return $blaa;
}
function Disconnect() {
//$this->con = mysql_connect($this->host,$this->user,$this->pass);
mysql_close();
}
}
?>
我确信**信息是正确的,因为我将其指定为:
$con=mysqli_connect("example.com","example","password","my_db");
在index.php中它起作用
答案 0 :(得分:1)
需要注意的重要一点是,您的测试用例实际上并不能证明它可以工作。
此输出是什么:
$conn = mysql_connect("example.com", "user", "password");
if (!$conn) {
die('Could not connect: ' . mysql_error());
}
如果没有这些信息,您不一定会得到失败的信息。
最重要的是,让我们稍微简化一下类以进行调试:
class dbconnect
{
private $host = '**';
private $user = '**';
private $pass = '**';
public $con;
public function Connect($host = "localhost", $user = "root", $pass = "")
{
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->con = mysql_connect($this->host, $this->user, $this->pass);
if (!$this->con) {
die('Could not connect: ' . mysql_error());
}
$blaa = mysql_select_db($db, $this->con);
mysql_query("SET NAMES UTF8");
return $blaa;
}
public function Disconnect()
{
mysql_close($this->con);
}
}
现在,当您做什么时,您会得到什么
$db = new dbconnect("example.com", "user", "password");
请确保您使用的凭据有效,并且没有遇到诸如通过这些方法设置默认值或错误分配变量之类的问题。
现在,如果您不想提供这些值,则只需:
$db = new dbconnect();
签出PHP的PDO或以最少的价格(但实际上,只需使用PDO)替代mysqli。 PHP的mysql扩展不是安全的,因此永远不要在任何环境中使用它。
答案 1 :(得分:0)
如果连接信息正确,请检查MySQL用户的主机访问权限:
SELECT user, host FROM mysql.user
如果设置了“localhost”,则用户只能在本地访问数据库,否则“%”将打开访问权限。
答案 2 :(得分:0)
通常连接凭据存在问题。
检查您是否可以使用为该网站设置的详细信息登录您的mysql。
mysql -u apache -p
然后会询问您密码。
如果该登录不起作用,则表示该用户的mysql帐户存在问题。
答案 3 :(得分:0)
您使用错误的参数进行访问。只需转储$this->con = mysql_connect($this->host,$this->user,$this->pass);
行中的变量。您可以使用调试器或 echo ,打印说明。
此外,使用PDO扩展名访问数据库。好多了! Why shouldn't I use mysql_* functions in PHP?