2014-09-03 24 views
0

我是PDO的新手。PHP PDO,連接工程購買查詢不執行

這是我迄今所做的,

創建文件「pdotest.php」

代碼在這個文件中

<?php 

try { 
    $conn = new PDO('mysql:host=localhost;dbname=houserentsystem;charset=utf8', 'root', 'admin'); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 
$stmt = $conn->query("SELECT roomName FROM roomName.roomnames"); 
$results = $stmt->fetchAll(); 
$stmt->closeCursor(); 
print_r($results); 
var_dump($results); 

它應該顯示從數據庫中的一些結果,而是它說在螢火蟲500內部服務器錯誤,但在屏幕上沒有錯誤,它是一個白色的空白屏幕。

+1

你測試了你的查詢嗎? 'roomName.roomnames'不能是'MySQL'表名afaik。加上 - 如果你打開異常模式,那麼當你沒有捕獲它們時你就看不到拋出的異常。所以在你的'PDO'查詢代碼周圍放置另一個'try {} catch(){}'。 – 2014-09-03 17:19:53

回答

2
$stmt = $conn->query("SELECT roomName FROM roomName.roomnames"); 

試試這個:

$stmt = $conn->query("SELECT roomName FROM roomnames"); 

的選擇語法(基本):

SELECT column[, another_column, ...] FROM tablename[WHERE condition][ORDER BY some_column ASC/DESC];` 

當你在錯誤模式設置爲PDO::ERRMODE_EXCEPTION,你需要使用try/catch看到任何錯誤。這會給你的db查詢帶來包裝try/catch語句的負擔。

檢查您的PHP日誌文件中的確切的PHP錯誤 - 一個白色的屏幕顯示爲PHP可能設置爲不顯示屏幕上的錯誤。

+0

我把'roomName.roomnames'變成'roomnames'。它的工作,非常感謝。 但PLZ解釋爲什麼它沒有工作時,我指定了它的表名?這是完美的罰款查詢tableName.columnName,爲什麼PDO沒有在那工作。 – 2014-09-03 17:24:25

+0

你的專欄是roomName。你的餐桌是房間名稱。按照上面的SELECT語法,它是'SELECT COLUMN FROM TABLENAME',它給出'從roomNames中選擇roomName'。如果這解決了您的問題,請選擇此項作爲答案。 – user3791372 2014-09-03 17:26:30

+0

也請添加到您的答案中,他錯過了圍繞其查詢代碼的'try'' catch'。否則他不會看到由他的查詢造成的任何錯誤,因爲他已將PDO錯誤模式設置爲PDO :: ERRMODE_EXCEPTION。謝謝。 – 2014-09-03 17:37:19

0

我會檢查這個部分:

SELECT roomName FROM roomName.roomnames 

你真的想從一個表名爲roomName.roomnames選擇ROOMNAME列?它是不是應該像

SELECT roomnames FROM roomName