我目前正在尝试输出连接表。
两个连接表由Address
表组成:
以及Address
表:
但是我收到了这个错误:
注意:未定义的索引:Street
Postcode
表中的每个联接索引都会发生此错误(因此City
Country
和{{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>";
}