while, if 和 else 条件

While, if and else conditions

我有代码:

while($res = mysql_fetch_array($rst)) 
        if(($res)==TRUE)
         echo "$res[2]";
        else
         echo "<img src='imagini/banner.png'>";

首先 echo 当我有结果时它会显示输出。 当条件为假时,第二个回声不显示图像。 有什么帮助吗? :) 谢谢

这里很可能是相对路径出了问题。确保设置正确。

编辑

虽然路径问题可能是个问题,但这并不是最大的问题。

您最可能想要的是:

// this tests if there are zero or more rows in your result
if (mysql_num_rows($rst)==0)
{
    echo "<img src='imagini/banner.png'/>";
}
else
{
    while ($res=mysql_fetch_array($rst))
    {
         echo $res[2];
    }
}

// this tests, for each row, if a column is set or not
while ($res=mysql_fetch_array($rst))
{
    // index is the index of the column that can be set or not
    if (empty($res[index]))
    {
        echo "<img src='imagini/banner.png'/>";
    }
    else
    {
         echo $res[2];
    }
}

此外,您似乎从数据库中检索了 <img> 标签,因为您有一个默认的 <img> 标签作为替代。如果 $res[2] 有这种模式 <img src='some_path'/> 也许你可以修改数据库的内容以只保留相对路径(没有标签)并在 while 循环中回显标签。

尝试切换 if 和 else,这样您就可以查看它是否与您的输出有关,或者它是否无法到达 else。

    if(($res)==FALSE)
     echo "<img src='imagini/banner.png'>";

我会修复一些格式问题,以提高可读性

while($res = mysql_fetch_array($rst)) 
    if(($res)==TRUE)
     echo "$res[2]";
    else
     echo "<img src='imagini/banner.png'>";

对此

while(false !== ( $res = mysql_fetch_array($rst) ) ){
    if($res[2] == true){ // or isset( $res[2] ) ?
         echo "$res[2]";
    }else{
         echo "<img src='imagini/banner.png'>";
    }
}

让我们从头开始。 mysql_fetch_array http://php.net/manual/en/function.mysql-fetch-array.php ~ returns 数组或假。

然后我们根据 false 评估它,并将它的值分配给 $res。接下来 $res 周围的额外 () 是没有意义的,即使在这里检查 true 可能你的问题 意义不大,它永远不会作为 false 进入循环,所以在loop $res 永远不会为假。最后添加适当的缩进和 {brackets}.

实际上你可能有这个打算?

if( mysql_num_rows( $rst ) ){
    while(false !== ( $res = mysql_fetch_array($rst) ) ){        
        echo $res[2];    
    }
}else{
    echo '<img src="imagini/banner.png">';
}

在等效的 PDO 中

if( $stmt->rowCount() ){
    while(false !== ( $res = $stmt->fetch(PDO::FETCH_NUM) ) ){        
        echo $res[2];    
    }
}else{
    echo '<img src="imagini/banner.png">';
}

请注意 mysql_* 函数系列从 PHP5.5 开始贬值 http://php.net/manual/en/book.pdo.php