While语句未输出ECHO问题:$getlogin==0时无预期输出
问题分析与修复方案
嘿,我来帮你拆解下这段代码的问题!核心问题出在你对mysql_fetch_array()返回值的理解上——这个函数在查询结果为空时,返回的是布尔值false,而不是0。所以当你的$checklogin查询没有匹配结果时,while循环的条件$getlogin = mysql_fetch_array($checklogin)会直接得到false,循环根本不会执行,那if ($getlogin == 0)的分支自然永远走不到,也就没了预期的"NOTHING TO DISPLAY"输出。
先贴出你的原代码方便对照:
while ($getlogin = mysql_fetch_array($checklogin)) { if ($getlogin == 0) { echo "NOTHING TO DISPLAY"; } else{ echo $getlogin['username']; echo $getlogin['password']; } }
修复方案
这里提供两种常用的修正思路,你可以根据场景选择:
方式一:先检查结果行数
先通过mysql_num_rows()判断查询是否有结果,再决定输出逻辑:
// 先获取查询结果的行数 $rowCount = mysql_num_rows($checklogin); if ($rowCount == 0) { echo "NOTHING TO DISPLAY"; } else { // 有结果时循环输出数据 while ($getlogin = mysql_fetch_array($checklogin)) { echo $getlogin['username']; echo $getlogin['password']; } }
方式二:用标记变量判断是否有数据输出
如果不想额外调用行数统计函数,可以用一个变量标记是否遍历到过数据:
$hasData = false; while ($getlogin = mysql_fetch_array($checklogin)) { $hasData = true; echo $getlogin['username']; echo $getlogin['password']; } // 循环结束后,若没有遍历到数据则输出提示 if (!$hasData) { echo "NOTHING TO DISPLAY"; }
另外提个小建议:mysql_*系列函数早已被PHP官方废弃,安全性和兼容性都很差,建议尽快换成mysqli或者PDO来操作数据库哦!
内容的提问来源于stack exchange,提问作者Bit
相关产品推荐
相关产品推荐

