将mySql结果定义为while循环的变量

时间:2014-10-18 04:43:26

标签: php mysql row

我想知道这是否可行。我知道这很难实用......但我确实遇到过这种情况可能派上用场的事。

直截了当地举这个例子。

while( $row = $qry->fetch(PDO::FETCH_ASSOC) ){}

现在,可以这样做吗?

$newVar = '$row = $qry->fetch(PDO::FETCH_ASSOC)';
while($newVar){}

我尝试了很多方法但无济于事。

我的while循环打印出大量数据,并且取决于查询/连接的类型(mySql,mySqli或PDO)将取决于while循环中的语句。

如果不支持预备语句,这有点是我的后备想法。

1 个答案:

答案 0 :(得分:2)

如果获取行的函数不同,您可以根据所使用的PHP版本使用闭包。要使用闭包,您需要定义一个知道如何获取行的函数,然后将其传递给while循环。例如,这里是PDO和MySQL的闭包:

$pdo_fetch = function() use ($qry)
{
    return $qry->fetch(PDO::FETCH_ASSOC);
}

$mysql_fetch = function() use ($result)
{
    return mysql_fetch_assoc($result);
}

这些闭包可以来自任何地方,然后传递到你的while循环中:

if($pdo)
{
    $fetch = $pdo_fetch;
}
else
{
    $fetch = $mysql_fetch;
}

while($row = $fetch()) { }