2016-07-17 87 views
-3

這是我一直在使用的代碼。當我打開它總是說「無法連接到服務器」我無法連接到我的SQL數據庫。

請幫我

<?php 

define('HOST','localhost'); 
define('USER','root'); 
define('PASSWORD',''); 
define('DATABASE','trialdb'); 

$link = mysqli_connect(HOST,USER,PASSWORD,DATABASE); 
mysqli_select_db($link,DATABASE); 

if (mysqli_connect(HOST,USER,PASSWORD,DATABASE)) { 
    die("Cannot connect to the server!"); 
} else { 
    echo "Success! You are connected to the server!<br />"; 
} 
if (mysqli_select_db($link,DATABASE)) { 
    echo "Success! You are now connected to the database."; 
} else { 
    die ("Cannot connect to the database!"); 
} 
?> 
+2

注意:您不需要調用連接兩次,只需檢查'if'塊中的'$ link',只需檢查[連接錯誤](https://www.google.com.ph /url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwitmOnIz_vNAhUCF5QKHaauAl8QFggaMAA&url=http%3A%2F%2Fphp.net%2Fmanual%2Fen%2Fmysqli.connect-error.php&usg=AFQjCNGTaGUBimHBz5iC7HdOy0E2-pcZ5g&sig2=E8BenYEYYBnHM0tQlet4Mg&bvm = bv.127178174,d.dGo) – Ghost

+0

很久沒有見過使用MySQLi程序方式的人。 如果無法連接,請檢查您的憑證和數據庫名稱。相反,將自定義錯誤消息寫入屏幕使用「try catch」並拋出異常。或者簡單地使用mysqli_connect_errno()來獲取更多描述性信息,如下所示: if(mysqli_connect_errno()){ printf(「Connect failed:%s \ n」,mysqli_connect_error()); exit(); } – DevWL

+0

你的MySQL正在運行嗎?你可以用'mysql'命令行連接嗎?用戶名/密碼組合是否正確?如果你用'127.0.0.1'交換'localhost'?如此衆多的問題... – jpaljasma

回答

1

mysqli_connect的返回類型是truthy所以你編程的if語句說:「無法連接到服務器「在你連接到服務器的情況下。

您可能需要在CS 101主題的複習上花費另外30個小時,從變量,if語句和函數開始。

1

你的代碼設計有邏輯上的缺陷。您連接到數據庫兩次,而不是連接一次,然後檢查是否成功。此外,該行

if (mysqli_connect(HOST,USER,PASSWORD,DATABASE))...show error 

會顯示一個錯誤,當連接成功。使用下面的設計模式來獲得更有用的結果。

$link = mysqli_connect(HOST,USER,PASSWORD,DATABASE); 
if (!$link) { 
    echo "MySQL error #". mysqli_connect_errno() .":<br/>"; 
    echo mysqli_connect_error(); 
    exit; 
} 
... //here it's safe to choose a DB and execute queries 

這是爲了發展。在生產中,不要在瀏覽器中顯示服務器錯誤。

+0

和錯誤報告,http://i.imgur.com/QlJYc2e.jpg – Drew

+0

我實際上已經刪除了'error_reporting(E_ALL)'和'ini_set('display_error','1')',因爲我認爲它是多餘的以解決OP的問題,但OP將從瞭解它中受益。 – BeetleJuice

+0

是的,我的意思不是嗤之以鼻,但是這種情況需要所有的聲吶,直到他舒服。 – Drew