Мне интересно, возможно ли это? Я знаю, что это вряд ли практично … Хотя я столкнулся со случаем, когда это может пригодиться.
Возьмите этот пример, прямо вперед.
while( $row = $qry->fetch(PDO::FETCH_ASSOC) ){}
Теперь можно ли сделать что-то подобное?
$newVar = '$row = $qry->fetch(PDO::FETCH_ASSOC)';
while($newVar){}
Я пробовал много способов, но безрезультатно.
Мои циклы while выводят много данных и в зависимости от типа запроса / соединения (mySql, mySqli или PDO) будут зависеть от того, какой оператор входит в цикл while.
Это в некоторой степени моя запасная идея, если подготовленные заявления не поддерживаются.
Если функция для извлечения строки отличается, вы можете использовать замыкания в зависимости от используемой версии 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()) { }
Других решений пока нет …