PHP While语句显示与queryresult相同的结果

时间:2014-08-23 14:09:49

标签: php mysql function if-statement

我的PHP函数有点麻烦。在数据库中,我从查询中得到2个结果。但我的功能是做其他事情。当我将'='编辑为'=='

时,它会发生变化

MySQL查询:

SELECT ContentPages.ContentPagesID, ContentType.ContentTypeName
FROM `ContentPages` INNER JOIN ContentType ON ContentPages.ContentTypeID = ContentType.ContentTypeID INNER JOIN ContentInformation ON ContentPages.ContentInformationID = ContentInformation.ContentInformationID

结果:

ContentPagesID                  ContentTypeName
01425d4a-2abd-11e4-b991-525400  products01
014269dd-2abd-11e4-b991-525400  information01

PHP功能:

function GetAllPages() {
$GetAllPagesSql = "SELECT ContentPages.ContentPagesID, ContentType.ContentTypeName FROM `ContentPages` INNER JOIN ContentType ON ContentPages.ContentTypeID = ContentType.ContentTypeID INNER JOIN ContentInformation ON ContentPages.ContentInformationID = ContentInformation.ContentInformationID";
    $GetAllPagesQuery = mysql_query($GetAllPagesSql);
    while (($GetAllPagesRow = \mysql_fetch_array($GetAllPagesQuery)) != false) {
        if($GetAllPagesRow[ContentTypeName] === 'product01') {
            DisplayProducts01DesignFunction();
        }
        else if ($GetAllPagesRow[ContentTypeName] === 'information01') {
            DisplayInformation01DesignFunction();
        }
    }
}

当我改变时:

if($GetAllPagesRow[ContentTypeName] = 'product01') {
    DisplayProducts01DesignFunction();
}
else if ($GetAllPagesRow[ContentTypeName] = 'information01') {
    DisplayInformation01DesignFunction();
}

对此:

if($GetAllPagesRow[ContentTypeName] === 'product01') {
    DisplayProducts01DesignFunction();
}
else if ($GetAllPagesRow[ContentTypeName] === 'information01') {
    DisplayInformation01DesignFunction();
}

它从显示函数DisplayProducts01DesignFunction()两次到DisplayInformation01DesignFunction()一次。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

如果您的代码已修复,它实际上应该只运行一次。当您将==更改为=时,它不会保持比较并成为导致TRUE的分配,因此您的if块会被执行,这是错误的。< / p>

if($GetAllPagesRow[ContentTypeName] = 'product01')

编写if条件不是正确的方法,如果使用该逻辑使代码运行正常,那么你做错了。 =应为==

当你说

if($GetAllPagesRow[ContentTypeName] = 'product01')

然后,即使您有100行,也会始终执行块。

现在你可能在我提出==时问好,那么为什么第一个if块不再工作?这是因为您正在比较错误的字符串,您的数据库包含products01而您的if包含product01,请参阅缺少的s。您的实际if条件应为

if($GetAllPagesRow[ContentTypeName] == 'products01') {
    DisplayProducts01DesignFunction();
}
else if ($GetAllPagesRow[ContentTypeName] == 'information01') {
    DisplayInformation01DesignFunction();
}