我正在研究 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 部分。
关于发生了什么的任何猜测。提前致谢