2011-06-26 35 views
3

似乎這是一個很常見的錯誤,但我無法解決它。我正在運行PHP 5.3.1,向外部MySQL服務器5.5.8發送一個 - 這兩個都使用Phpmyadmin並運行Windows Server 2k8R2。Mysqli:未知的服務器主機

當我嘗試以下方法:

$connection = new mysqli("myhost.com:3306", "myUser", "myPwd", "myDB"); 
    $result = $connection->prepare("SELECT * FROM tt_staff 
          WHERE crew_type = ? 
          AND inaktiv_vakt = 0 
          ORDER BY ansvarlig_vakt DESC, crew_type, navn_vakt"); 
    $result->bind_param("s", $value); 
    $result->execute(); 
    $result->bind_result($value, $name); 

我得到的「 警告:mysqli的:: mysqli的()[mysqli.mysqli]:(HY000/2005):未知MySQL服務器主機(... )「

我確信mysqli是在DB服務器上的php.ini中啓用的,但這也是我所做的一切,因爲我被告知這應該可以直接使用。由於這是我第一次使用準備好的語句,所以在那裏可能會出現一個簡單的錯字錯誤。

+0

你已經提到,你有兩個PhpMyAdmin - 你可以使用PhpMyAdmin從PHP連接到數據庫嗎?如果是 - 檢查您的設置(服務器地址和端口);如果否 - 可能是DB服務器上的防火牆。 – LazyOne

回答

16

的問題是庫MySQLi不接受該端口作爲主機名的一部分,但作爲一個單獨的參數。所以我覺得這是你應該如何打開連接:

$connection = new mysqli("myhost.com", "myUser", "myPwd", "myDB", "3306"); 

也許,不要給端口,因爲3306是默認端口。

+1

這就是解決方案,簡單而簡單。以爲我需要端口號,因爲我必須用普通的MySql連接來指定它。謝謝 :) –

0

的mysqli找不到數據庫服務器,您需要檢查域和端口號是否正確

1

檢查對數據庫用戶(「MYUSER」)的權限。確保權限允許通過'%'(或只是你的IP)進行連接,而不僅僅是'localhost'(127.0.0.1)。然後確保「刷新特權時

BlockquoteNote:phpMyAdmin的獲取用戶直接從MySQL的授權表的權限這些表的內容可以從服務器使用,如果他們已經手動更改的權限不同。在這種情況下,在繼續之前,你應該重新加載權限。

相關問題