注意:未定义的变量:PDO不返回任何数据时的行

时间:2014-04-28 05:27:20

标签: php

我有这段代码 -

$previous_date = date('Y-m-d',strtotime("-14 days"));

$conn = testdb_connect ();

        $getfamilydate= get_family_date ($previous_date);

        if (! $row)
        {
        echo "No testcase being executed in the selected duration";
        } else { while($row = $getfamilydate->fetch(PDO::FETCH_ASSOC))
            { 
            foreach($row as $key) 
                {
                    $twoWeekfamily[] = $key;
                }           
            }
        }

这里我试图检查查询是否返回指定持续时间(上一个日期)的任何结果,如果没有,它应该显示msg,否则返回数组。

我的持续时间与 -

相同

1天,2天,1周,2周......等等,我在所有持续时间内使用相同的代码。这个逻辑工作正常1天,即,如果没有数据显示msg,但是对于所有其他数据,如果查询没有返回数据,则抛出未定义变量:行通知。

这里的逻辑有什么问题?

3 个答案:

答案 0 :(得分:1)

做类似的事情 -

while($row = $getfamilydate->fetch(PDO::FETCH_ASSOC))
        { 
        foreach($row as $key) 
            {
                $twoWeekfamily[] = $key;
            }           
        }
 if(empty( $twoWeekfamily))
 {
echo "No testcase being executed in the selected duration";
 }

答案 1 :(得分:0)

更改您的代码,如下所示

if (! $getfamilydate){
    echo "No testcase being executed in the selected duration";
}
else {
     $count = $getfamilydate->rowCount();
     if($count > 0){
         while($row = $getfamilydate->fetch(PDO::FETCH_ASSOC))
         { 

              var_dump($row);

         }
     }
    else{
        echo "No rows found";
    }
}

在您的代码中,您在将值设置为$ row

之前检查$ row

答案 2 :(得分:0)

if (!$getfamilydate->rowCount()){
    echo "No testcase being executed in the selected duration";
}else { while($row = $getfamilydate->fetch(PDO::FETCH_ASSOC))
        { 
            foreach($row as $key) 
            {
                $twoWeekfamily[] = $key;
            }           
        }}

$getfamilydate->rowCount()声明中使用$row代替if