2016-11-23 74 views
0

我想使用,如果查找查询条件我不能这样做,任何人都可以建议我。我用mongo数据库使用php-我如何使用,如果条件与查找查询

<?php 
    $realtime = date("2016-09-22 12:55:24"); 
    $mongotime = New DateTime($realtime); 
    $mt = $mongotime->getTimeStamp(); 
    var_dump($mt); 
    //database Connection 
    $server= mongodb://localhost:27017"; 
    $c = new Mongo($server); 
    $db = $c->dbname; 
    echo "Database selected"; 

    //collection selection 
    $collection = $db->collection; 
    echo "Collection selected"; 
    $cursor = $collection->find(); 
    //If Condition 
    if (($realtime-timestamp)<=5) { 
    if (channel<=11) { 
     if (channel>=36) { 
     echo “dual band”; 
     } 
    } 
    if (channel>=36) { 
     if (channel<=11) { 
     echo “dual band”; 
     } 
    } else { 
     echo “Single band”; 
    } 
    foreach ($cursor as $doc) { 
     var_dump($doc); 
    } 
    } 
?> 
+2

$ channel/channel even set ...哪里?你不能在php中使用'if(channel)',你将不得不使用'if($ channel)',即一个美元符号来给变量名加前缀。 – Stuart

+0

频道是我的数据库中的列,我需要检查频道的数量是否小于11或大于36.我使用$,值是用户定义的。 –

回答

0

在PHP中,我们使用一般fetch_array()查询例如,选择*表ID = 1
那么结果将ID = 1和值。上面在你的代码中提到查询数据库连接和数据库连接看起来像php活动数据库操作使用codeigniter php框架。需要把结果的查询,然后把你如上所述。

+0

我与mongo db连接因此,在mongo中选择查询的地方,我们需要使用find。直到连接部分和收集选择它正常工作。我能够获取整个或特定部分的数据库,但是当我使用如果条件我无法获取。 –

0

我认为有一组简单的操作可以用来弄清楚这里发生了什么。

Debug your PHP

同时,试试这个

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$mt = strtotime("2016-09-22 12:55:24"); 
var_dump($mt); 

//database Connection 
$server= mongodb://localhost:27017"; 
$c = new Mongo($server); 
$db = $c->dbname; 
echo "Database selected"; 

//collection selection 
$collection = $db->collection; 
echo "Collection selected"; 
$cursor = $collection->find(); 

if (empty($cursor)) die('cursor is empty, we found nothing :('); 
// hmm, what did we find? what is it's structure? 
var_dump($cursor); 


// Loop over cursor in collection that you found 
foreach ($cursor as $doc) { 

    //If Condition where you are focused on $doc (current member of cursor) 
    if (($mt - $doc['timestamp'])<=5) { 
    if ($doc['channel'] <= 11) { 
     if ($doc['channel'] >= 36) { 
     echo “dual band”; 
     } 
    } 
    if ($doc['channel'] >= 36) { 
     if ($doc['channel'] <= 11) { 
     echo “dual band”; 
     } 
    } else { 
     echo “Single band”; 
    } 
    } 
} 
+0

timestamp是数据库中的一个列表。所以我在这里做的是我把数据和转换成unix格式,然后比较这个日期与我在数据库中的日期,如果差异小于或等于5,那么我检查通道数据。所以我选择收集的部分它正常工作,没有条件也我能够获取数据,但如果使用条件,如果工作不正常。 –

+0

查看我的更新回答 – WEBjuju