2015-09-29 49 views
0

我試圖通過MySQL連接到數據庫,但它不起作用。我收到以下錯誤:Php MySQL通過MySQL連接數據庫不起作用,但ODBC確實

「連接失敗:無連接可以作出,因爲目標機器積極地拒絕它。」

這裏的基本代碼:

<?php 
$servername = "server"; 
$username = "username"; 
$password = "password"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully"; 
?> 

我可以連接從Excel,也通過通過MySQL的下面而不是代碼的ODBC連接的數據庫:

<?php 
    $user = 'username'; 
    $pass = 'password'; 
    $server = 'server'; 
    $database = 'database'; 

    // No changes needed from now on 
    $connection_string = "DRIVER={SQL Server};SERVER=$server;  DATABASE=$database"; 
    $conn = odbc_connect($connection_string,$user,$pass); 

if (!$conn){ 
    exit("Connection to the database Failed: " . $conn); 
} 
echo "Connected successfully"; 
    ?> 

有任何想法嗎?

+0

你正嘗試使用'SQL Server'驅動程序連接,另一個使用'mysqli'連接?服務器是運行MySQL還是Microsoft SQL Server? – Dezza

+0

我正在等待數據庫管理員確認,但它應該是兩者。有沒有辦法檢查而無需等待管理員? – JCD

+0

如果您拒絕了連接,它可能在非標準端口號上運行,被防火牆或不存在。最好從你的DBA得到確認,但如果MySQL和MSSQL都有相同的數據庫,我會感到非常驚訝。 – Dezza

回答

1

你說你可以使用ODBC,這意味着你有一個SQL Server數據庫,而不是MySQL數據庫連接。如果你不喜歡odbc,pdo是你的另一種選擇。 Mysqli不僅僅是它的mysql選項。

+0

我認爲你是對的,但我仍然在等待確認。我真的很想使用MySQL,因爲如果我錯了,糾正我,我失去了一些ODBC或PDO的功能。我正在構建一個項目,它將使用很多不同的表格,所以我應該導入到excel中,然後導出到本地MySQL中。你們有什麼感想?當然,我將不得不自動化,也許每晚運行它.. – JCD

+0

我覺得你很困惑。 mysql和sql server都是數據庫。沒有混合mysql/sqlserver數據庫這樣的事情。你有一個或另一個。你連接到sql server數據庫的事實意味着你沒有mysql。這就是你需要的所有確認。當你得到你的問題時,你會讓db管理員對你大加讚賞。 ODBC和PDO不是數據庫,它們只是允許您連接到數據庫的驅動程序,您不會失去任何一個功能。堅持ODBC並且所有的都會很常規。 –

+0

好,澄清一下,你可能有兩個,但他們不會是一個混合類型的事情,你仍然必須使用其中一個或另一個。 –

0

試試這個代碼:

<?php 
$link = mysqli_connect('server','username','password','database'); 

if (!$link) { 
    echo "Error: Unable to connect to MySQL." . PHP_EOL; 
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; 
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; 
    exit; 
} 

echo("success"); 

?> 
+1

我試過你的代碼,並得到以下消息:錯誤:無法連接到MySQL。調試errno:2002調試錯誤:由於目標機器主動拒絕它,因此無法建立連接。 – JCD

+0

這是因爲主機沒有運行MySQL服務器或防火牆阻塞端口。你正在運行一個LAMP或WAMP堆棧? –

+0

我正在運行WAMP堆棧。 – JCD