PDO获取返回空值

时间:2018-03-29 15:04:30

标签: php mysql sql pdo phpmyadmin

我是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"
  }

1 个答案:

答案 0 :(得分:0)

它进入while循环并给你---|的事实证明有结果。但它不是出于某种原因而呈现的。可能是一个空字符串。或者可能是结果包括<span style="display:none">foo</span>并且您在Web浏览器中查看结果(这在使用PHP时实际上相当常见),无论原因是什么,用

替换while循环
$stmt->execute();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));

并以向您显示原始输出的内容查看PHP的输出(这意味着,不要在将其解析为html的浏览器中查看它。如果您必须在浏览器中查看它,请使用View-Source:URL方法。或者更好的是,从命令行使用curl。),它应该揭示实际结果是什么。