由于某种原因,下面的代码为我提供了以下错误: 警告:为foreach()提供的参数无效。我在PHPmyadmin中测试了查询,查询可以自行运行。出于某种原因,如果这个php文档,它在上下文中不起作用。是否有导致这种情况的具体错误?
由于
<!Doctype <!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<th> Course </th>
<th> Instructor </th>
<?php
$db = new PDO("mysql:dbname = 282exam; host = localhost", "root", "root");
$rows = $db->query("SELECT c.Name, i.Name
FROM course c
JOIN instructor i ON i.CId = c.Code");
foreach ($rows as $row){
?>
<tr>
<td> <?php print $row["c.Name"] ?></td>
<td> <?php print $row["i.Name"] ?></td>
</tr>
<?php
}
?>
</body>
</html>
答案 0 :(得分:3)
而不是
foreach ($rows as $row){
做
while($row = $rows->fetch()){
(我刚发现改变是可选的,你的方式应该可行,但这就是我一直这样做的方式)
并且您不需要在结果数组中指定表别名
$row["Name"]
但是如果它们都相同,你应该为每个列指定一个别名......
SELECT c.Name as cname, i.Name as iname
$row["cname"] , $row["iname"]
另外,弗雷德说:
然后新PDO中不应包含任何空格(“mysql:dbname = 282exam; host = localhost“和 php.net/manual/en/pdo.error-handling.php会抛出你的 关于它的错误。参见手册php.net/manual/en/pdo.connections.php - 弗雷德 - 伊 -
换句话说:将此更改为..
$db = new PDO("mysql:dbname=282exam;host=localhost", "root", "root");
和
<doctype>
</table>
此外,您使用的是<th>
代码,但没有使用表头标记。查看one of these links以找出正确的表格语法。