2012-10-23 149 views
-1

我是新來的PDO ..我嘗試了一些在線教程,並找到了一些分步指南。我正在使用WAMP,我創建了一個名爲「try」的數據庫,名爲「books」。 現在在我的index.php我寫道:PDO代碼不能正常工作

<?php 
$host = "localhost:3306"; 
$db = "try"; 
$user = "clyde"; 
$pass = "moonfang"; 
$conn = new PDO("mysql:host=$host;dbname=$db",$user,$pass); 

$sql = "SELECT * FROM books"; 
$q = $conn->query($sql) or die("failed!");  

while($r = $q->fetch(PDO::FETCH_ASSOC)){  
    echo $r['title']; 
} 
?> 

現在,每當我在我的瀏覽器中加載本地主機,我看到這些錯誤; enter image description here 我不明白的問題.. :-(

+0

檢查所有值.. $主機(是本地主機是3307端口),$分貝,$ user,$ pass – Svetoslav

+1

您是否確實在與您的Web服務器相同的機器上運行MySQL服務器,並偵聽TCP端口3307?默認的MySQL端口是3306,而不是3307. – lanzz

+0

是的本地主機和端口是正確的。當我使用mysql它可以但PDO代碼不起作用。:-( – clydewinux

回答

2

根據several examples似乎PDO更喜歡host並在DSN中port本身:

$host = "localhost"; 
$port = 3307; 
$conn = new PDO("mysql:host=$host;port=$port;dbname=$db",$user,$pass); 

Here's the PHP manual for the PDO MySQL DSN注意 「端口」。部分

+0

+1很好的捕獲。我隱約記得這是一個可能的問題。 –

+0

仍然得到相同的錯誤.. :-( – clydewinux

+0

@ClydeWinux是你的MySQL服務器正在運行?如果您在此端口上telnet到本地主機,該怎麼辦?(如果您正在運行Windows 7並且沒有安裝telnet,請按照本手冊的說明進行操作(http://www.fettesps.com/windows-7- enable-telnet /)或使用[膩子](http://www.chiark.greenend.org.uk/~sgtatham/putty/)) – h2ooooooo

0

問題是目標機器主動拒絕[連接]

因此您必須檢查數據庫服務器的用戶名/密碼/訪問權限是否都正常;包括IP /主機和端口/防火牆設置。

0

錯誤發生的第8行是$q = $conn->query($sql) or die("failed!");該行混合了mysql_和PDO,不是必需的。

的代碼看起來應該像

$sql = "SELECT * FROM books"; 
while($r = $sql->fetch(PDO::FETCH_ASSOC)){  
    echo $r['title']; 
} 

你也應該包括PDO的錯誤處理

`