我有以下用于连接数据库的代码。当某些连接无法连接时,我看到很多错误。好吧,我已经隐藏了error_reporting(0);
,但我知道它不是解决方案。
db.php中
class DB {
protected $db_name = 'demo';
protected $db_user = 'root';
protected $db_pass = 'root';
protected $db_host = 'localhost';
public function connect() {
$connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
mysql_select_db($this->db_name);
return true;
}
然后我有一个文件 inc.php ,我在每个页面都包含这个文件。
require_once 'db.php';
$db = new DB();
$db->connect();
//start the session
session_start();
现在我感到很困惑,包括die('Could not connect: ' . mysql_error());
我想要header("Location: logout.php");
,如果无论如何连接都死了。
谢谢
答案 0 :(得分:1)
我认为如果连接和选择数据库操作成功,connect
函数返回$connection
对象会更好,如果其中任何一个失败,则返回false。然后在您的调用页面/函数中检查结果是否为$connection
,如果是,则继续,否则执行重定向。
如下所示:
public function connect() {
$connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
if (!($connection && mysql_select_db($this->db_name, $connection)) {
// Log the error mysql_error()
return false;
}
return $connection;
}
在你的呼叫页面/功能中:
$connection = $db->connect();
if (!$connection) {
header("LOCATION: logout.php"); exit();
}
// Use your $connection variable here onwards where required.
最后请注意,mysql_
扩展程序已弃用。开始使用mysqli
或PDO
答案 1 :(得分:1)
mysql_select_db成功时返回TRUE,失败时返回FALSE。
public function connect() {
$connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
return mysql_select_db($this->db_name);
}
然后是你的inc.php
require_once 'db.php';
$db = new DB();
if (!$db->connect()) {
header("LOCATION: logout.php"); exit();
}
//start the session
session_start();
答案 2 :(得分:1)
替换:
public function connect() {
$connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
mysql_select_db($this->db_name);
return true;
}
致:
public function connect() {
$connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
if(!$connection){
//die('Could not connect: ' . mysql_error());
return false
}if(!mysql_select_db($this->db_name)){
return false;
}
return true;
}
inc.php
require_once 'db.php';
$db = new DB();
$con = $db->connect();
if(!$con){
header("Location:logout.php");
exit();
}
答案 3 :(得分:1)
如果未建立连接,则$ connection将等于FALSE,因此:
if( $connection === FALSE ) {
die( "Could not connect: " . mysql_error() );
}
但是,不推荐使用mysql_ *函数。如果您正在使用现有的应用程序,那么最好的快速选择是将所有mysql_ *函数替换为mysqli_ *对应函数。如果这是一个新的应用程序,我强烈建议切换到PDO。您的connect语句如下所示:
$connection = new PDO( "mysql:dbname={$this->db_name};host={$this->db_host}", $this->db_user. $this->db_pass );
如果连接失败,则抛出PDOException。您可以找到有关建立PDO连接和捕获错误的更多信息here。