我收到以下错误...
解析错误:语法错误,第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();
}
?>
知道什么是错误吗?我检查过丢失的分号,逗号和作品,但什么都没有!
答案 0 :(得分:7)
解析错误:语法错误,第98行.... \ index.php中的意外T_AS
T_AS
是PHP解释器中as
的标记。尝试解析代码的语法时出乎意料。
as
仅在foreach
循环中有效,并且您使用的是while
。
将while
循环更改为foreach
循环。
致命错误:在113行的index.php中调用未定义的方法PDO :: fetch()
这是运行时错误 - PDO对象没有名为fetch()
的方法。你在正确的对象上调用fetch()
吗?
在评论中指出Wrikken,它将是您$stmt
对象的一种方法。
答案 1 :(得分:6)
因为你在'while'循环中使用'as'关键字,这是无效的。将'while'改为'foreach',你就可以了。