在表中显示数据

时间:2013-08-12 12:02:14

标签: php mysql pdo

我有以下函数从db表中获取所有数据行。 一切似乎都很好,除了我不确定在我的代码中将已提取的$row分配给$data的一部分。 由于我没有明确设置提取模式,我希望通过调用fetch()返回一个数组对象。

function getAll()
{  
    $data = array();

    try
    {
        $conn = new PDO('mysql:host=localhost;dbname=pdo', 'root', '');
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT * FROM pdo_table');
        $stmt->execute();

        while($row = $stmt->fetch()) 
        {
            $data = $row;
        }
    }
    catch (PDOException $e) 
    {
        echo 'Error: ' . $e->getMessage();
    }

    return $data;   
}

现在,我有一个单独的索引页面,用于回显html表中返回的$data。 我首先添加了对包含相关函数的php页面的引用,然后将返回的数组分配给另一个名为$results的变量。

<?php foreach($results as $row) { ?>
    <tr>
        <td><?php echo $row['id'] ?></td>
        <td><?php echo $row['Date'] ?></td>
        <td><?php echo $row['name'] ?></td>
        <td><?php echo $row['company'] ?></td>
        <td><?php echo $row['email'] ?></td>
        <td><?php echo $row['phone'] ?></td>
        <td><?php echo $row['interest'] ?></td>
        <td><?php echo $row['message'] ?></td>             
    </tr>
<?php } ?>

我目前只插入了一行,但这并没有根据需要在表格中填充结果 enter image description here

2 个答案:

答案 0 :(得分:1)

虽然你的目标是正确的,但实施上也存在缺陷。

正确的代码:

function getAll($conn, $sql, $data = $array())
{  
    $stmt = $conn->prepare($sql);
    $stmt->execute($data);
    return $stmt->fetchAll();
}

不应该在此功能中连接,而是使用已建立的站点范围的连接一次
该函数应该能够接受任意查询,以及它的绑定数据 你捕捉异常的想法是错误的。

答案 1 :(得分:-3)

只更改一条陈述

          $stmt->execute(); to


     $result=   $stmt->query($statement); 
        to fetch data
         and   process  result set in following way
    while($row=$result->fetch())
        {
      <tr>
    <td><?php echo $row['id'] ?></td>
    <td><?php echo $row['Date'] ?></td>
    <td><?php echo $row['name'] ?></td>
    <td><?php echo $row['company'] ?></td>
    <td><?php echo $row['email'] ?></td>
    <td><?php echo $row['phone'] ?></td>
    <td><?php echo $row['interest'] ?></td>
    <td><?php echo $row['message'] ?></td>             
</tr>

}

投票我肯定谢谢