我有代码:
while($res = mysql_fetch_array($rst))
if(($res)==TRUE)
echo "$res[2]";
else
echo "<img src='imagini/banner.png'>";
第一个回显,当我有结果时,它显示了我的输出。当if条件为假时,第二次回波不显示图像。请帮忙好吗?:)谢谢。
我想修改的一些格式化的东西来增加可读性
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 ~返回数组或false
然后根据false对其求值,并将其值赋给$res。接下来,$res
周围的额外()
是没有意义的,即使在这里检查为真可能您的问题意义不大,它永远不会进入循环为假,因此在循环内$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
这里很可能是相对路径出错了。请确保正确设置。
编辑
虽然路径可能是一个问题,但它不是这里最大的问题。
你最可能想要的是:
// 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'>";