如果命令为空,则取消设置

时间:2017-11-14 22:33:03

标签: php mysql recordset

我在mysql之后有一个while命令并给我一行但如果行为空我会得到错误'未定义的变量'代码是:

$m_list = mysql_query("SELECT
    t2.name,     
    t2.group
    FROM tbl_m_list t1, tbl_mn_list t2
    WHERE t1.user_id = '$uid' AND
    t1.name       = t2.name    AND
    t1.group  = t2.group" );

while ($mrow = mysql_fetch_assoc($m_list)) {
    $mname[] =$mrow['name'];
    $group[] =$mrow['group'];
}

这是用于调用第一个命令的第2个命令:

<?php for ($i = 0; $i < count($mname); $i++) {?>
    <div >
        <div >
            <span >job</span>
            <span >name:</span>
            <div ><?php    echo  $mname[$i] ?>          </div>
            <span >daste:</span>
            <div ><?php    echo  $group[$i] ?>      </div>
        </div>
    </div>
<?php }?>

给我&#39;来自命令2的第4行的未定义变量&#39;错误&#34; mname&#34; 感谢

1 个答案:

答案 0 :(得分:0)

需要定义变量以防止发生通知,否则,仅在mysql_fetch_assoc返回任何数据时才设置变量。

基本解决方案

while循环之前,定义它们,如下所示:

$mname = array();
$group = array();

while ($mrow = mysql_fetch_assoc($m_list)) {
// ... 

更好的解决方案

使用另一个循环代替while循环并将数据存储在另外两个变量中。这是一个更简洁的解决方案,因为您没有两次迭代数据。

while ($mrow = mysql_fetch_assoc($m_list)) { ?>
<div ><div ><span >job</span>
        <span >name:</span>
            <div ><?php    echo  $mrow['name'] ?>          </div>
        <span >daste:</span>
            <div ><?php    echo  $mrow['group'] ?>      </div>
    </div></div>
<?php } ?>

注意:尝试重构此代码,以便您不使用mysql_*函数(使用PDOmysqli代替),因为它们已从PHP7中删除起。