2014-02-11 62 views
-2
if (!empty($_POST)) { 
    $host = $_POST['host']; 
    $user = $_POST['user']; 
    $pass = $_POST['pass']; 
    $db = $_POST['db']; 
    echo '<pre>'; 
    print_r($_POST); 
    $con = @mysqli_connect($host . ":3360", $user, $pass, $db); 

    // [email protected]_connect('192.168.100.42','root','vertrigo','skates'); 
    // Check connection 

    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
    else { 
     echo 'connected'; 
    } 

    @mysqli_close($con); 
} 

我正在使用此腳本來訪問本地遠程數據庫服務器(基本上我想訪問本地數據庫服務器通過實時網站),howewer,我得到錯誤:PHP的mysql連接到任何刪除服務器後變量

Failed to connect to MySQL: Unknown MySQL server host '192.168.100.42:3360' (11004)

請幫助擺脫這一點。

+2

對於初學者,停止使用'@'來禁止錯誤 – Rogue

+0

如果您在服務器上運行此腳本,則將您的ip更改爲localhost,因爲此腳本將db作爲本地主機訪問 – Swapnil

+2

'192.168.100.42'是私有內部IP地址。 Web服務器與數據庫服務器在同一LAN上嗎?如果沒有,那麼該地址將不起作用。數據庫服務器需要一個可公開解析的IP地址(這可能意味着要在路由器上打開該端口,除非您真的知道您爲保護數據庫所做的工作,否則*可能不是個好主意)。 – David

回答

1

192.168.100.42看起來像本地IP。您需要嘗試連接到您的靜態公共IP,然後將路由器中的端口3306轉發到192.168.100.42機器。

這不是你唯一的問題;

僅僅因爲$ _POST不爲空,不要認爲它已經設置了這些數組鍵而不是空的。語法如

if(isset($_POST['user'] && !empty($_POST['user']))) 

好得多。

此外,不要在任何數據庫交互中使用$ _POST而不使用sanitisation,也不要使用root用戶連接到數據庫。

我不知道你確切的應用程序,但它是不可靠的。