2014-03-12 93 views
-1

對不起,如果標題含糊不清,不確定如何說出它。 目前,我試圖做一個簡單的PHP運行查詢並顯示數據庫中的所有數據,但沒有數據顯示頁面是完全空白的。從PDO和MySQL不顯示數據

下面是代碼:

<?php 
$username = "user"; 
$password = "pass"; 

try { 
    $conn = new PDO('mysql:host=localhost;dbname=database', $username, $password); 
    $stmt = $conn->prepare('SELECT * FROM contacts'); 
    $stmt->execute(array('id' => $id)); 

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    if (count($result)) { 
    foreach ($result as $query_row) 
     { 
     extract($query_row); 


     echo '<tr>'; 
     echo '<td>'.$fname.'</td>'; 
     echo '<td>'.$lname.'</td>'; 
     echo '<td>'.$title.'</td>'; 
     echo '<td>'.$deparment.'</td>'; 
     echo '<td><a href="mailto:'.$email.'">'.$email.'</a></td>'; 
     echo '<td>'.$cell.'</td>'; 
     echo '<td>'.$handle.'</td>'; 
     echo '<td>'.$steam.'</td>'; 
     echo '<td>'.$skype.'</td>'; 
     echo '</tr>'; 
     } 
    } 
    } else { 
    echo "No rows returned."; 
    } 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 
?> 

我一直在下面的指南/讀取不同的,所以問題試圖聯繫上把握之前,所以我從來沒有與PDO工作。一條線,我想可能會搞砸了是這一行:

$stmt->execute(array('id' => $id)); 

我不明白什麼該行正在做,並且如果我能得到這將是巨大的解釋。我相信我理解其他代碼背後的邏輯。

+2

'error_reporting'和'display_error'是否打開?我懷疑發生了錯誤,但它被隱藏了;因此是空白/白頁。另外它看起來你的選擇查詢沒有'where'子句。 – Latheesan

+1

您需要告訴PDO拋出異常,然後您會看到問題所在(例如,您沒有綁定變量):'$ conn = new PDO('mysql:host = localhost; dbname = database',$ username, $ password,array(PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION));' – jeroen

+0

'$ stmt-> execute(array('id'=> $ id));'正在執行準備好的語句。被傳入的數組應該用於參數替換,但是在查詢中沒有任何參數,所以這沒有意義並且會導致錯誤。只需轉到'$ stmt-> execute()'。 –

回答

1

這應該解決您的問題(它在我的服務器上工作)。

,我加了<table></table>標籤並放在它們各自的位置。

<?php 
$username = "user"; 
$password = "pass"; 

try { 

    // uncomment for testing purposes as noted by jeroen 
    // $conn = new PDO('mysql:host=localhost;dbname=database', $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 

    $conn = new PDO('mysql:host=localhost;dbname=database', $username, $password); 
    $stmt = $conn->prepare('SELECT * FROM contacts'); 
    $stmt->execute(array('id' => $id)); 

    // $stmt->execute(); // as noted by Mike Brant 

} 

catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

echo "<table>"; 

    if (count($result)) { 
    foreach ($result as $query_row) 
     { 
     extract($query_row); 

    echo '<tr>'; 
    echo '<td>'.$fname.'</td>'; 
    echo '<td>'.$lname.'</td>'; 
    echo '<td>'.$title.'</td>'; 
    echo '<td>'.$deparment.'</td>'; 
    echo '<td><a href="mailto:'.$email.'">'.$email.'</a></td>'; 
    echo '<td>'.$cell.'</td>'; 
    echo '<td>'.$handle.'</td>'; 
    echo '<td>'.$steam.'</td>'; 
    echo '<td>'.$skype.'</td>'; 
    echo '</tr>'; 
     } 
    } 
echo "</table>"; 

?> 
+0

Downvoter,謹慎解釋?給我啓迪;-)沒有解釋的情況下下調沒有任何幫助。 –