简单的php / pdo;使用sql别名时空白(TableAlias.AmbiguousColumnName)

时间:2014-01-07 16:52:47

标签: php sql pdo

我有这个简单的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>  

它正在回归空白。当我不使用连接和别名时,它没有任何问题。我在这里错过了什么吗?

1 个答案:

答案 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>