0

データベースに接続するための次のコードがあります。そして、接続に失敗したときに多くのエラーが表示されます。私は入れて隠れています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;
    }

次に、すべてのページに含める1 つのファイル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");

ありがとうございました

4

4 に答える 4

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

于 2013-08-03T06:20:57.523 に答える
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();
于 2013-08-03T06:21:00.207 に答える
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();
}
于 2013-08-03T06:24:04.617 に答える