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

Php 如果命令为空,则取消设置while,php,mysql,recordset,Php,Mysql,Recordset,我在mysql后面有一个while命令,并给我一行,但如果行为空,我会得到错误“Undefined variable”代码: $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

我在mysql后面有一个while命令,并给我一行,但如果行为空,我会得到错误“Undefined variable”代码:

$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'];
}
这是调用第一个命令的第二个命令:

<?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 }?>

工作
姓名:
达斯特:
从命令2“mname”为第4行提供“未定义变量”错误
谢谢

需要定义变量以防止出现通知,否则,只有在
mysql\u fetch\u 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 } ?>
while($mrow=mysql\u fetch\u assoc($m\u list)){?>
工作
姓名:
达斯特:

注意:请尝试重构此代码,这样您就不会使用
mysql.*
函数(改为使用
PDO
mysqli
),因为它们已从PHP7及以后的版本中删除。

i确实尝试了while($mrow=mysql.\u fetch\u assoc($m\u list)){?>,但请告诉我这个错误:mysql.\u fetch\u assoc()预期参数1为资源,在…!中为空!如果我想使用mysqli,只需添加一个“i”命令没有其他区别?感谢您的查询返回资源?您可以使用
if
while包装为
以检查查询是否成功并返回资源。