chaque équivalent de () pour les résultats de MySQL, pour imiter première boucle de foreach ()

StackOverflow https://stackoverflow.com/questions/1290303

  •  18-09-2019
  •  | 
  •  

Question

Je l'ai vu dans le code je travaille, ce qui suit:

foreach( $mysql_result as $row ) $site_id = $row->id;

$ mysql_result est, bien sûr, un mysql_result, donc ce foreach équivaut à un certain temps (mysql_fetch_row ())

Parfois, le résultat est connu pour produire une seule ligne, mais le code a encore un « foreach » il donne l'impression d'être une boucle à travers plusieurs lignes.

J'essayé d'utiliser each () mais ne fonctionne pas pour cela.

Je sais que je pourrais utiliser mysql_fetch_row (), mais le code doit être indépendant DB donc je ne peux pas utiliser des fonctions spécifiques DB. Y at-il quelque chose comme each () qui fonctionne dans ce cas, tout comme la première itération de foreach ()?

PS: ce que je fais actuellement la lisibilité est à son tour l'exemple précédent à ceci:

foreach( $mysql_result as $row ) break;
$site_id = $row->id;

Il est assez évident que le foreach sera à la boucle plus qu'une seule fois.

Était-ce utile?

La solution

Je pense que ce que vous voulez est au lieu de ceci:

foreach( $mysql_result as $row ) $site_id = $row->id;

Juste ceci:

$site_id = $mysql_result[0]->id;

Autres conseils

  

PS: ce que je fais actuellement   La lisibilité est tour précédent   par exemple à ceci:

     

foreach ($ mysql_result de que $ row)   break;

Enveloppez que dans une fonction il est donc clair qu'il obtient une ligne (et sont encore indépendants db)

function fetch_single_row($result) 
{
  foreach( $mysql_result as $row ) break;
  return $row;
}

Alors votre code ressemblerait

$row = fetch_single_row($mysql_result);
$site_id = $row->id;

Maintenant, vous n'aurez pas à interroger sur toute la pause foreach étrange (..); déclarations tout le code.

Si vous voulez un seul résultat, vous n'avez pas besoin de boucle.

$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$site_id = $row['id'];

Vous pouvez utiliser une boucle do

$i =0
do {
    $site_id = $mysql_result[$i++]->id;
} while ($i <= 0);

Est-ce que vous voulez?

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];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top