Почему я получаю «Неожиданный T_AS» в запросе PHP PDO? - PullRequest
3 голосов
/ 05 ноября 2010

Я получаю следующую ошибку ...

Ошибка разбора: синтаксическая ошибка, неожиданный T_AS в .... \ index.php в строке 98

для следующего скрипта ...

 <?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 ]

7 голосов
/ 05 ноября 2010

Ошибка разбора: синтаксическая ошибка, неожиданный T_AS в .... \ index.php в строке 98

T_AS - это токен для as в интерпретаторе PHP. Это было неожиданно при попытке разобрать синтаксис вашего кода.

as действительно только в цикле foreach, и вы используете while.

Измените цикл while на цикл foreach.

Обновление

Неустранимая ошибка: вызов неопределенного метода PDO :: fetch () в index.php в строке 113

Это ошибка времени выполнения - у объекта PDO нет метода с именем fetch(). Вы звоните fetch() на нужный объект?

Ознакомьтесь с документацией .

Как указано в комментариях Wrikken , это будет метод вашего $stmt объекта.

6 голосов
/ 05 ноября 2010

Потому что вы используете ключевое слово as в цикле while, что недопустимо. Измените 'while' на 'foreach', и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...