我正在研究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的组合条件,它仍会为所有记录打印“得分”并且永远不会在其他部分。
理想情况下,我期待看到的输出是这样的
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 :(得分:1)
此代码:
if($status->element = 'cmi.core.score.raw'
需要:
if($status->element == 'cmi.core.score.raw'
单个=
用于分配,而两个==
用于比较。