输出连接表

时间:2018-05-02 18:54:37

标签: php mysql database left-join

我目前正在尝试输出连接表。

两个连接表由Address表组成:

enter image description here

以及Address表:

enter image description here

但是我收到了这个错误:

  

注意:未定义的索引:Street

Postcode表中的每个联接索引都会发生此错误(因此City Country和{{1}}也会发生此错误。

我的问题是如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

为什么你的未定义是你没有使用你加入的行来执行。

$stmt = $pdo->prepare('SELECT * FROM Customer LEFT JOIN Address USING (AddressID)');
$stmt->execute();

上面的代码是您加入的代码然后立即覆盖$ stmt的新内容,其中没有连接数据。

删除这两行代码。

$stmt = $pdo -> prepare('SELECT * FROM Customer');
$stmt -> execute();

它会起作用。

作为旁注,您正在使用CustomerRowOutput方法更难以阅读代码。

在双引号内使用变量替换系统时,可以使用数组。只需将它们包裹在花括号{}

所以你当前的语法<tr><td>$cn</td>...</tr>应该是<tr><td>{$customerRow['CustomerName']}</td>...</tr>包裹数组的花括号将允许它输出。这也节省了内存,因为你没有创建指针,只是为了让回声更容易。

并且PHP还支持字符串类型变量中的换行符。这样整个功能就可以成为

function CustomerRowOutput($customerRow){
    return "<tr>
        <td>{$customerRow['CustomerName']}</td>
        <td>{$customerRow['PhoneNo']}</td>
        <td>{$customerRow['Email']}</td>
        <td>{$customerRow['Street']}</td>
        <td>{$customerRow['Postcode']}</td>
        <td>{$customerRow['City']}</td>
        <td>{$customerRow['Country']}</td>
    </tr>";
}