我是PHP / SQL的新手,我确信我犯了一些简单的错误,但我已经搜索了几个小时,无法弄清楚它在哪里。测试时没有错误被抛出。
目前以下代码只返回--- |结果是。澄清表我试图从4列中获取数据:name,room,in,out。它还有6行数据,我可以看到它在数据库中。
我试图让它返回我存储的6行中的所有数据。希望有人可以向我展示我的方式错误
<?php
$db = new PDO('mysql:host=localhost;dbname=dbname','user','pass');
$sql = "SELECT * FROM table";
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $db->prepare($sql);
$stmt->execute();
$error= $stmt->errorInfo();
echo $error[2];
while($row = $stmt->fetch(PDO::FETCH_ASSOC));
{
echo $row['name']. "-" . $row['room']. "-" . $row['in']. "-" .$row['out']. "|";
}
?>
更新:
如建议我删除了while循环并用
替换它var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
看起来它能够很好地获取结果,甚至不必查看源以查看结果,但我不确定为什么while循环不起作用。替换while循环后的输出(仅显示1行的结果,但所有6行相同)。
array(4) {
[0]=>
array(4) {
["name"]=>
string(4) "john"
["room"]=>
string(4) "room"
["in"]=>
string(1) "5"
["out"]=>
string(2) "11"
}
答案 0 :(得分:0)
它进入while循环并给你---|
的事实证明有结果。但它不是出于某种原因而呈现的。可能是一个空字符串。或者可能是结果包括<span style="display:none">foo</span>
并且您在Web浏览器中查看结果(这在使用PHP时实际上相当常见),无论原因是什么,用
$stmt->execute();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
并以向您显示原始输出的内容查看PHP的输出(这意味着,不要在将其解析为html的浏览器中查看它。如果您必须在浏览器中查看它,请使用View-Source:URL
方法。或者更好的是,从命令行使用curl。),它应该揭示实际结果是什么。