我想知道这是否可行。我知道这很难实用......但我确实遇到过这种情况可能派上用场的事。
直截了当地举这个例子。
while( $row = $qry->fetch(PDO::FETCH_ASSOC) ){}
现在,可以这样做吗?
$newVar = '$row = $qry->fetch(PDO::FETCH_ASSOC)';
while($newVar){}
我尝试了很多方法但无济于事。
我的while循环打印出大量数据,并且取决于查询/连接的类型(mySql,mySqli或PDO)将取决于while循环中的语句。
如果不支持预备语句,这有点是我的后备想法。
答案 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()) { }