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 的值的组合,它仍然会为所有记录打印“分数”,并且永远不会进入 else部分。

理想情况下,我期待看到的输出是这样的

理想的 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 案例中是数字的 value 字段,因此总是最终进入错误的 IF 部分。

关于发生了什么的任何猜测。提前致谢

4

1 回答 1

1

这段代码:

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

需要是:

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

一个=用于分配,而两个==用于比较。

于 2012-04-18T17:42:29.690 回答