数据不会从PDO和MySQL显示

时间:2014-03-12 18:15:14

标签: php mysql pdo

对不起,如果标题含糊不清,不确定如何说出来。 目前,我试图只做一个运行查询的简单php,并显示数据库中的所有数据,但没有数据显示页面完全空白。

以下是代码:

<?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合作,因此我一直在关注指南/阅读不同的SO问题,试图掌握它。我认为可能搞砸的一句就是这一行:

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

我不明白那条线在做什么,如果我能得到一个很好的解释。我相信我理解其余代码背后的逻辑。

1 个答案:

答案 0 :(得分:1)

这可以解决您的问题(它在我的服务器上运行)。

Plus ,我添加了<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>";

?>