我有以下函数从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 } ?>
我目前只插入了一行,但这并没有根据需要在表格中填充结果
答案 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>
}
投票我肯定谢谢