Pdo警告:在php中为foreach()提供的参数无效

时间:2015-03-11 01:06:10

标签: php pdo foreach warnings

我正在尝试在PHP中使用PDO进行SQL查询,并且出现了一些我无法弄清楚的问题。

这是我的代码:

    *//Connection file*

    < ? php

    $dsn = 'mysql:host=localhost;dbname=oopdo';

    $db = new PDO($dsn, 'root', '');

    ?>

    *//Index file*

    < ? php

    try{
        require_once 'pdo_connection.php';

        $sql = 'SELECT * FROM names'.
                'ORDER BY name';
    } catch (Exception $ex) {
        $error = $ex->getMessage();

    }


    ?>

<html>
    <head>

    </head>
    <body>
        <h2>Looping direct over SELECT query</h2>
        <table>
            <tr>
                <th>Name</th>
                <th>Meaning</th>
                <th>Gender</th>
            </tr>


            foreach($db->query($sql) as $row){ (line 35)


            <tr>
                <td> echo $row['name']; </td>
                <td> echo $row['meaning']; </td>
                <td> echo $row['gender']; </td>
            </tr>

             }
        </table>
    </body>
</html>

警告:第35行为foreach()提供的参数无效

我在这里做错了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

你做错了什么:

您尚未检查查询的返回状态,该状态因语法错误而失败。你应该使用这样的代码:

$result = $db->query($sql);
if ($result !== false) {
    foreach($result as $row) {
       // do stuff
    }
} else {
    echo 'The SQL query failed with error '.$db->errorCode;
}

你实际做错了什么:

你将查询分成两行,你已经设法省略了 一些空白。您的查询以

提交
SELECT * FROM namesORDER BY name

names

之后立即在字符串中添加额外的空格