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
我有代码:
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