Mysql无效参数

时间:2015-12-21 15:46:22

标签: php mysql

由于某种原因,下面的代码为我提供了以下错误: 警告:为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>

1 个答案:

答案 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以找出正确的表格语法。