2012-04-18 112 views
1

我正在使用Moodle,但有一个php-mysql有关的疑问,由于缺乏我的知识而变得复杂。检查查询返回的输出是否包含字符串/数字

我有一个查询返回输出正常。使用IF-ELSe条件我需要检查是否有包含字符串的字段之一和包含数字的字段之一的组合。

我检查的字段在数据库表中是以下类型。

element - varchar(255) 
value - longtext 

这是我的查询下面所提到它返回O/P:

查询

$scormstatus = $DB->get_records_sql("SELECT sc.*, s.name AS activityname FROM mdl_scorm_scoes_track AS sc JOIN mdl_scorm AS s ON s.id = sc.scormid WHERE sc.scormid = '" .$activityid. "' AND sc.userid = '" .$userid. "' AND sc.attempt = '".$scormattempt->attempt."'"); 
    foreach($scormstatus as $status) 
     { 
     echo "<br/>".$status->element."**".$status->value."<br/>"; 
     if(is_numeric($status->value)) 
     { 
      if($status->element = 'cmi.core.score.raw' && $status->value != '0') 
      { 
       echo "<br/>Score"; 
      }  
      else 
      { 
       if($status->element = 'x.start.time' && $status->value != '0') 
       { 
        echo "<br/>Started"; 
       } 
      } 
     } 
    } 

输出:

  cmi.core.lesson_location**2 
     Score 

     cmi.core.lesson_status**incomplete 
     cmi.core.score.max**50 
     Score 

     cmi.core.score.min**0 
     cmi.core.score.raw**0 
     cmi.core.total_time**00:00:22.00 

     x.start.time**1334767290 
     Score 

现在,你会看到,即使虽然我正在检查'cmi.core.score.raw'和值大于0的组合的条件,但它仍然是prin所有记录的ts'分数',并且永远不会进入其他部分。

理想我很期待看到的输出是这样的

IDEAL O/P:

 cmi.core.lesson_location**2 
    cmi.core.lesson_status**incomplete 
    cmi.core.score.max**50 
    cmi.core.score.min**0 
    cmi.core.score.raw**0 
    cmi.core.total_time**00:00:22.00 
    x.start.time**1334767290 
    Started 

我的猜测是,它不能识别的值字段,是一个数字在我的IF - ELSE情况下,因此总是最终进入错误的IF部分。

任何猜测正在发生的事情。由于事先

+0

也没有必要把标签放在标题 – SupremeDud 2012-04-18 17:35:33

+0

是啊不知道为什么我补充说。它现在不在。关于这个问题的任何想法? – ivn 2012-04-18 17:39:41

回答

1

此代码:

if($status->element = 'cmi.core.score.raw' 

需要是:

if($status->element == 'cmi.core.score.raw' 

单个=是用于分配,另外两个是==用于比较。

+0

正确的,我曾经使用过,但因为它力量给我一个可能性的正确结果,我将它改为单个'=',然后从未切换回它。我认为应该让它工作。 – ivn 2012-04-18 17:51:50

+0

它为除了一个可能性之外的所有可能性给出正确的值。而不是'分数'它显示'开始'与'=='如果我改变它为'=',只是在这种情况下,它给了我正确的输出。在这种情况下,我正在检查'$ status-> element =='cmi.core.lesson_status''和'$ status-> value =='completed''。数据库中的这个值仍然存在于其他部分,这是错误的。有任何想法吗? – ivn 2012-04-18 18:05:23

+0

请发布您的完整代码,当前输出和期望输出 - 我无法阅读您的想法。没有看到你在做什么,试着用'!=='替换'!=',以确保它没有想到'“不完整”'和'“0”'是相同的。 – Cal 2012-04-18 19:41:26

相关问题