【问题标题】:Displaying database content显示数据库内容
【发布时间】:2019-04-06 06:48:42
【问题描述】:

我正在尝试使用 php 显示数据库“hospitaldb”,收集“医生”内容。我在集合中有电子邮件、密码、fname、lname 字段。当我尝试显示这些字段时,我收到错误消息:

注意:未定义索引:第 40 行 C:\xampp\htdocs\phpmongodb\viewdoctor.php 中的电子邮件

注意:未定义索引:第 41 行 C:\xampp\htdocs\phpmongodb\viewdoctor.php 中的密码

注意:未定义索引:第 42 行 C:\xampp\htdocs\phpmongodb\viewdoctor.php 中的 fname

注意:未定义索引:第 43 行 C:\xampp\htdocs\phpmongodb\viewdoctor.php 中的 lname

$server = "mongodb://localhost:27017/hospitaldb";
    try{
        $connection = new MongoDB\Client($server);
        /*$hospitaldb = $connection->test;*/
        $hospitaldb = $connection->hospitaldb;
    }catch (MongoConnectionException $ConErrMsg)
    {
        echo "$ConErrMsg";
    }

    $data = "<table style='border:1px solid red;";
    $data .= "border-collapse:collapse' border='1px'>";
    $data .= "<thead>";
    $data .= "<tr>";
    $data .= "<th>First Name</th>";
    $data .= "<th>Last Name</th>";
    $data .= "<th>Email</th>";
    $data .= "<th>Password</th>";
    $data .= "</tr>";
    $data .= "</thead>";
    $data .= "<tbody>";

    try{
        $db = $connection->hospitaldb;
        $collection = $db->doctors;
        $cursor = $collection->find();

        foreach ($cursor as $document)
        {
            $data .= "<tr>";
            $data .= "<td>" . $document["email"] . "</td>";
            $data .= "<td>" . $document["password"]."</td>";
            $data .= "<td>" . $document["fname"]."</td>";
            $data .= "<td>" . $document["lname"]."</td>";
            $data .= "</tr>";

        }

    }catch (MongoException $mongoException)
    {
        echo "$mongoException";
    }

输出:

object(MongoDB\Model\BSONDocument)#20 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectId)#16 (1) {
      ["oid"]=>
      string(24) "5ca746b2a930602fb8000e04"
    }
    ["email"]=>
    string(16) "sanekt@gmail.com"
    ["password"]=>
    string(6) "sanket"
    ["fname"]=>
    string(6) "sanket"
    ["lname"]=>
    string(6) "sanket"
  }
}


object(MongoDB\Model\BSONDocument)#22 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectId)#21 (1) {
      ["oid"]=>
      string(24) "5ca757fea930602fb8000e05"
    }
    ["email"]=>
    string(11) "p@gmail.com"
    ["password"]=>
    string(4) "7888"
    ["fname"]=>
    string(6) "piyush"
    ["lname"]=>
    string(4) "shah"
  }
}


object(MongoDB\Model\BSONDocument)#16 (1) {
  ["storage":"ArrayObject":private]=>
  array(5) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectId)#20 (1) {
      ["oid"]=>
      string(24) "5ca8444aa9306032cc001a32"
    }
    ["email"]=>
    string(17) "shahsir@gmail.com"
    ["password"]=>
    string(7) "shahsir"
    ["fname"]=>
    string(4) "Shah"
    ["lname"]=>
    string(4) "Shah"
  }
}

【问题讨论】:

  • 错误即将到来,因为您从 $document 访问的内容不存在。你可以做 var_dump($document);死;在循环中并试图弄清楚。如果仍然不能,请在此处发布输出。
  • 如果我在每个循环中都执行 var_dump($document),那么我就会得到内容。
  • 请将其放入循环然后访问数据 $document = $document->toArray();请告诉我们它是否有效
  • 检查 $document 中使用的索引是否与数据库中使用的列名匹配
  • 是的,Sanket 正是

标签: php database mongodb


【解决方案1】:

您发布的问题对我有用:

我的设置: php 7.2 线程安全 从此处https://pecl.php.net/package/mongodb/1.5.3/windows 下载适用于 Windows 的 DLL。我把它放在 ext 文件夹中。

作曲家.json

    "require": {
        "mongodb/mongodb": "^1.4"
    }
}

从您的帖子中执行的 php 代码

<?php
require_once __DIR__ . "/vendor/autoload.php";
$server = "mongodb://localhost:27017/hospitaldb";
    try{
        $connection = new MongoDB\Client($server);
        /*$hospitaldb = $connection->test;*/
        $hospitaldb = $connection->hospitaldb;
    }catch (MongoConnectionException $ConErrMsg)
    {
        echo "$ConErrMsg";
    }

    $data = "<table style='border:1px solid red;";
    $data .= "border-collapse:collapse' border='1px'>";
    $data .= "<thead>";
    $data .= "<tr>";
    $data .= "<th>First Name</th>";
    $data .= "<th>Last Name</th>";
    $data .= "<th>Email</th>";
    $data .= "<th>Password</th>";
    $data .= "</tr>";
    $data .= "</thead>";
    $data .= "<tbody>";

    try{
        $db = $connection->hospitaldb;
        $collection = $db->doctors;
        $cursor = $collection->find();

        foreach ($cursor as $document)
        {
            $data .= "<tr>";
            $data .= "<td>" . $document["first_name"] . "</td>";
            $data .= "<td>" . $document["last_name"]."</td>";
            $data .= "</tr>";

        }

    }catch (MongoException $mongoException)
    {
        echo "$mongoException";
    }

    var_dump($data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多