equivalente de cada () para resultados mysql, a primeira alça de imitador de foreach ()
Pergunta
Eu vi no código que eu estou trabalhando, o seguinte:
foreach( $mysql_result as $row ) $site_id = $row->id;
$ mysql_result é, claro, um mysql_result, de modo que este foreach é equivalente a um tempo (mysql_fetch_row ())
Às vezes, o resultado é conhecido por produzir apenas uma linha, mas o código ainda tem um "foreach" para que ele dá a impressão de ser um loop através de várias linhas.
Eu tentei usar cada (), mas não funciona para isso.
Eu sei que eu poderia usar mysql_fetch_row (), mas o código deve ser DB independente, então não posso usar funções específicas DB. Existe algo parecido com each () que as obras neste caso apenas como a primeira iteração foreach ()?
PS: o que eu faço atualmente para legibilidade é transformar o exemplo anterior a esta:
foreach( $mysql_result as $row ) break;
$site_id = $row->id;
Por isso, é bastante óbvio que a vontade foreach no máximo de loop apenas uma vez.
Solução
Eu acho que você quer é, em vez disso:
foreach( $mysql_result as $row ) $site_id = $row->id;
Apenas isto:
$site_id = $mysql_result[0]->id;
Outras dicas
PS: o que eu faço hoje para legibilidade é transformar o anterior exemplo para isso:
foreach ($ mysql_result quanto $ linha) break;
dispor que em uma função, por isso é claro que ele recebe uma linha (e ainda são db independente)
function fetch_single_row($result)
{
foreach( $mysql_result as $row ) break;
return $row;
}
Em seguida, o código ficaria assim
$row = fetch_single_row($mysql_result);
$site_id = $row->id;
Agora você não terá que se perguntar sobre todo o intervalo a estranha foreach (..); declarações por todo o código.
Se você quer apenas um resultado, então você não precisa loop.
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$site_id = $row['id'];
Você pode usar um loop Do
$i =0
do {
$site_id = $mysql_result[$i++]->id;
} while ($i <= 0);
É isso que você quer?
if ( 1 == count( $mysql_result ) )
{
$row = current( $mysql_result );
// could probably also do this unless the array isn't zero-indexed
// $row = $mysql_result[0];
}