2015-06-14 135 views
2

我已經使用PDO從數據庫中讀取表格。 我試着迴應我的結果,但我得到一個沒有錯誤的空白頁面。PDO從數據庫讀取

我的代碼是:

<?php 
include 'config.php'; 
id = "264540733647332"; 
try { 
    $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
catch(PDOException $e) 
    { 
    echo "Connection failed: " . $e->getMessage(); 
    } 

    $result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';"); 

    if ($result->fetchColumn() != 0) 
    { 
     foreach ($result->fetchAll(PDO::FETCH_BOTH) as $row) { 

      $Data1 = $row['Data1']; 
      $Data2 = $row['Data2']; 

      echo $Data2; 
     } 
    } 
    ?> 

但回聲是空的,沒有任何錯誤。 我做錯了什麼?

謝謝大家!

+0

試試這個: - '$結果= $ conn->查詢( 「SELECT * FROM mytable WHERE id ='」。$ id。「'」); ' –

+0

你好,我做了改變,但沒有結果,沒有錯誤。我仍然看不到回聲。感謝您的建議 –

+0

'$ result'可能會失敗。迴應查詢並查看直接執行時是否有效。你也應該使用準備好的語句。我認爲'$ id'來自客戶端? – chris85

回答

0

幾件事情要改變:

  • 不要忘記$
  • 如果你去捕獲錯誤,趕上整個PDO代碼
  • 您可以使用rowCount()來計算行數
  • 呼應的東西,如果記錄數爲0

include 'config.php'; 
$id = "264540733647332"; 
try { 
    $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';"); 

    if ($result->rowCount() != 0) 
    { 
     $row = $result->fetch(PDO::FETCH_BOTH); 
     echo $row['Data1']; 
     echo $row['Data2']; 
    }else{ 
     echo 'no row found'; 
    } 
}catch(PDOException $e){ 
    echo "error " . $e->getMessage(); 
} 

還可以使用準備好的語句,例如:

$result = $conn->prepare("SELECT * FROM mytable WHERE id=:id"); 
$result->execute(array(':id'=>$id)); 
+0

缺少$是這裏的一個錯字,而不是我的代碼。對於那個很抱歉!非常感謝你的解決方案。代碼現在正在工作! –

0

我假設只有一條記錄的ID爲「264540733647332」。

問題是$result->fetchColumn()調用讀取結果集中的第一行,然後前進到下一個結果。由於只有一個結果,因此後面的$result->fetchAll()調用不會返回任何內容,因此不會顯示數據。

爲了解決這個問題更換fetchColumnrowCount

<?php 
include 'config.php'; 
id = "264540733647332"; 
try { 
    $conn = new PDO("mysql:host=$hostname;dbname=mydata", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
catch(PDOException $e) 
    { 
    echo "Connection failed: " . $e->getMessage(); 
    } 

    $result = $conn->query("SELECT * FROM mytable WHERE id='".$id."';"); 

    if ($result->fetchColumn() != 0) 
    { 
     foreach ($result->fetchAll(PDO::FETCH_BOTH) as $row) { 

      $Data1 = $row['Data1']; 
      $Data2 = $row['Data2']; 

      echo $Data2; 
     } 
    } 
    ?> 
+0

非常感謝您的解決方案。我使用rowCount更改fetchColumn,代碼正在工作! –