2016-07-30 66 views
1

所以我試圖在PHP OOP中使用我的手,並且我試圖做一個簡單的mysql數據庫連接類。這是我的代碼,然後我會解釋發生了什麼。PHP OOP:當錯誤信息通過時,mysql_connect不會返回false

的index.php

<?php 

// Connect to Database Class 
require_once('../libs/DB.class'); 
$connection = new DatabaseConnect('localhost', '', ''); 

DB.class

<?php 

class DatabaseConnect { 

    // When class is called, make sure to grab the host, username, and password to connect to the MySQL Database 

    public function __construct($db_host, $db_username, $db_password) { 
    echo 'Attempting Connection . . . <br>'; 

    // If the method Connect() doesn't return true then kill the script and say you done messed up... or tell the user that connection has been successful 

    if(!$this->Connect($db_host, $db_username, $db_password)) { 
     die("Connection to $db_host failed"); 
    } else { 
     echo "Connected to $db_host"; 
    } 
    } 

    // When the Connect method is called from the construct, grab the passed variables, try to connect, and return true or false 

    public function Connect($db_host, $db_username, $db_password) { 
    if(!mysql_connect($db_host, $db_username, $db_password)) { 
     return false; 
    } else { 
     return true; 
    } 
    } 

} 

由於我提供了沒有用戶名,並且使得在index.php文件對象時沒有密碼,該構建體應殺該腳本並說我還沒有能夠連接到MySQL。但是,無論我提供給$ db_username或$ db_password變量,無論登錄信息是否正確,Connect()方法總是返回true。它永遠不會返回錯誤。我不知道爲什麼。任何幫助,將不勝感激。

謝謝!

+5

停止使用**過時並且PHP7的去除**'mysql_ * '功能。遷移到PDO並開始使用準備好的語句。 –

+0

感謝您的建議,但我想弄清楚爲什麼我的代碼不工作。 –

+0

您應該使用PDO而不是創建您自己的DatabaseConnect類... –

回答

0

mysql_connect()已在PHP 5.5.0中棄用,並且已在PHP 7.0.0中刪除。 可以使用

PDO :: __結構()

try { 
    $dbh = new PDO($db_host, $db_username, $db_password); 
    } catch (PDOException $e) { 
     echo 'Connection failed: ' . $e->getMessage(); 
    } 

mysqli_connect()

if(!mysqli_connect($db_host, $db_username, $db_password)) { 
     return false; 
    } else { 
     return true; 
    }