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

时间:2010-11-05 00:55:23

标签: 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();          
    }
?>

知道什么是错误吗?我检查过丢失的分号,逗号和作品,但什么都没有!

2 个答案:

答案 0 :(得分:7)

  

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

T_AS是PHP解释器中as的标记。尝试解析代码的语法时出乎意料。

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

while循环更改为foreach循环。

更新

  

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

这是运行时错误 - PDO对象没有名为fetch()的方法。你在正确的对象上调用fetch()吗?

Check out the documentation

在评论中指出Wrikken,它将是您$stmt对象的一种方法。

答案 1 :(得分:6)

因为你在'while'循环中使用'as'关键字,这是无效的。将'while'改为'foreach',你就可以了。