我有这个简单的php / pdo代码:
<?php
include 'dbcon.php';
$stmt = $db->prepare('select * from tbl_request r inner join tbl_category c on r.id_category = c.id where r.id_user = :id_user');
$stmt->execute(array(':id_user' => $_SESSION['id_user']));
$data = $stmt->fetchAll();
?>
<table class="datagrid1">
<?php foreach ($data as $row): ?>
<tr>
<td><?php echo $row['r.dts_create']; ?></td>
<td><?php echo $row['c.name']; ?></td>
<td><?php echo $row['r.title']; ?></td>
<td><?php echo $row['r.description']; ?></td>
<td><?php echo $row['r.flag']; ?></td>
</tr>
<?php endforeach ?>
</table>
它正在回归空白。当我不使用连接和别名时,它没有任何问题。我在这里错过了什么吗?
答案 0 :(得分:1)
此行之后
$data = $stmt->fetchAll();
查看数据结构总是有帮助的。
print_r($data);
你得到一个数组数组,其中每个数组包含索引和列名称作为键的值,如
Array
(
[0] => Array
(
[id] => 1
[0] => 1
[username] => admin
[1] => admin
因此,您必须使用表列作为数组的键来访问。在你的情况下
<td><?php echo $row['dts_create']; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['title']; ?></td>
<td><?php echo $row['description']; ?></td>
<td><?php echo $row['flag']; ?></td>