为什么我在PHP PDO请求中得到"意外的T_AS"?

JM4*_*JM4 3 php mysql pdo

我收到以下错误...

解析错误:语法错误,第98行的....\index.php中的意外T_AS

对于以下脚本......

 <?php
    try {
        $db = new PDO('mysql:host=localhost;dbname=db', 'user', 'pw');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->beginTransaction();

        $stmt = $db->prepare("SELECT * FROM tablename");
        $stmt->execute();

        while($db->fetch(PDO_FETCH_ASSOC) as $row) {
            $id= $row['id'];
            $name= $row['name'];
        }   

        $db->commit();
    }

    catch (PDOException $e)
    {
        $db->rollback();
        echo "There was a system error.<br>".$e->getMessage();          
    }
?>
Run Code Online (Sandbox Code Playgroud)

知道什么是错误吗?我检查了丢失的分号,逗号和作品但没有得到任何结果!

ale*_*lex 7

解析错误:语法错误,第98行的....\index.php中的意外T_AS

T_ASasPHP解释器中的标记.尝试解析代码的语法时出乎意料.

as仅在foreach循环中有效,并且您正在使用while.

while循环更改为foreach循环.

更新

致命错误:在113行​​的index.php中调用未定义的方法PDO :: fetch()

这是运行时错误 - PDO对象没有调用方法fetch().你在呼唤fetch()正确的对象吗?

查看文档.

正如Wrikken在评论中所说,它将是你的$stmt对象的一种方法.

  • @ JM4再次仔细阅读本书的代码示例.如果它*仍然*匹配上面的代码,请将它扔进火中. (3认同)

Jam*_*arl 6

因为您在'while'循环中使用'as'关键字,这是无效的.将'while'改为'foreach',你很高兴.

  • 应该是`$ stmt-> fetch(PDO :: FETCH_ASSOC)` (2认同)