Reputation: 716
I create function to get data from mongoDB by PHP code. But It seem not working well.
let's see my code
function updateperformancescore($timepf)
{
$mon = new Mongo('mongodb://127.0.0.1:27017');
$dbs = $mon->selectDB('bitdindatabase');
$col = $dbs->selectCollection('bd_performance_score');
$query2 = array("user_ID"=>"999");
echo "<br>query__".$query2["user_ID"];
$data2 = $col->find($query2,true);
echo "<br>count___".count($data2)."<br>";
echo "check is_object--".is_object($data2)."<br>";
//echo "--".$data2["user_ID"]."<br>";
error_reporting(E_ALL ^ E_NOTICE);
foreach ($data2 as $obj)
{
echo "aaaa";
$which = array("user_ID"=>$obj["user_ID"],"time"=>$obj["ps_avgtime"],"slug"=>$obj["lesson_slug"]);
echo json_encode($which);
}
and webpage show only
query_999 count__1 check is_object--1
but my data in mongo is
{ "_id" : ObjectId("501e768eefbdb8637e2b00c8"), "user_ID" : 999, "lesson_slug" : 999, "ps_avgtime" : 999 }
{ "_id" : ObjectId("501e7698efbdb8637e2b00c9"), "user_ID" : 999, "lesson_slug" : 998, "ps_avgtime" : 888 }
{ "_id" : ObjectId("501e76a1efbdb8637e2b00ca"), "user_ID" : 999, "lesson_slug" : 997, "ps_avgtime" : 777 }
{ "_id" : ObjectId("501e76a9efbdb8637e2b00cb"), "user_ID" : 999, "lesson_slug" : 996, "ps_avgtime" : 77 }
{ "_id" : ObjectId("501e76b6efbdb8637e2b00cc"), "user_ID" : 999, "lesson_slug" : 995, "ps_avgtime" : 555 }
{ "_id" : ObjectId("501e76c0efbdb8637e2b00cd"), "user_ID" : 999, "lesson_slug" : 994, "ps_avgtime" : 444 }
{ "_id" : ObjectId("501e76caefbdb8637e2b00ce"), "user_ID" : 999, "lesson_slug" : 993, "ps_avgtime" : 333 }
{ "_id" : ObjectId("501e76d3efbdb8637e2b00cf"), "user_ID" : 999, "lesson_slug" : 992, "ps_avgtime" : 222 }
{ "_id" : ObjectId("501e76dcefbdb8637e2b00d0"), "user_ID" : 999, "lesson_slug" : 991, "ps_avgtime" : 111 }
{ "_id" : ObjectId("501e76e6efbdb8637e2b00d1"), "user_ID" : 999, "lesson_slug" : 990, "ps_avgtime" : 1 }
Why it's not going into foreach ? And What's wrong with this code and How I get data correctly. help or guide me please :)
edit
I just error_log and It show
Fatal error: Uncaught exception 'MongoException' with message 'The MongoCursor object has not been correctly initialized by its constructor' in /var/www/web/sendanswer.php:92 Stack trace: #0 /var/www/web/sendanswer.php(92): MongoCursor->rewind() #1 /var/www/web/sendanswer.php(343): sendanswer->updateperformancescore(4.4269230365753) #2 {main} Next exception 'MongoException' with message 'The MongoCursor object has not been correctly initialized by its constructor' in /var/www/web/sendanswer.php:92 Stack trace: #0 /var/www/web/sendanswer.php(92): MongoCursor->rewind() #1 /var/www/web/sendanswer.php(343): sendanswer->updateperformancescore(4.4269230365753) #2 {main} thrown in /var/www/web/sendanswer.php on line 92
what does it mean ??
edit
That means "Probably your Mongo object is not connected to a database server."
Upvotes: 0
Views: 1588
Reputation: 43275
What I see is an error in datatypes.
In database user_ID is an integer, in your PHP query, it is a string. Try:
$query2 = array("user_ID"=> 999);
instead of :
$query2 = array("user_ID"=>"999");
PHP may be easy on datatypes, but I am not sure about Mongodb and its PHP driver.
Also there is an incorrect parameter in your find
statement. Remove the true
as it should be an array of fields, not a bool
This code works correctly :
<?php
$mon = new Mongo('mongodb://127.0.0.1:27017');
$dbs = $mon->selectDB('my_db');
$col = $dbs->selectCollection('newColl');
$query2 = array("user_ID"=> 999);
echo "<br>query__".$query2["user_ID"];
$data2 = $col->find($query2);
error_reporting(E_ALL ^ E_NOTICE);
foreach ($data2 as $obj)
{
$which = array("user_ID"=>$obj["user_ID"],
"time"=>$obj["ps_avgtime"],
"slug"=>$obj["lesson_slug"]);
echo json_encode($which);
echo PHP_EOL ;
}
?>
Output:
[......]$ php testmongo.php
<br>query__999{"user_ID":999,"time":999,"slug":999}
{"user_ID":999,"time":999,"slug":999}
{"user_ID":999,"time":339,"slug":999}
{"user_ID":999,"time":339,"slug":5599}
Upvotes: 1