Schleife oder nicht Schleife?

J

joky_joky

Tach zusammen ich habe ein script bei dem in einer Datenbank nach Id's gesucht werden soll. $id ist ein Array mit mehreren inhalten.
PHP:
$y="0";
$count= count($id) - 1;
while ($y <= $count)
{
$res = mysql_db_query("$database","SELECT * FROM $table_login WHERE Id = $id[$y]");
$num = mysql_num_rows($res);
for ($i=0; $i<$num; $i++)
  	 {
	 $dbid = mysql_result($res, $i, "Id");
	 $dbnickname = mysql_result($res, $i, "Nickname");
          echo"$dbid, $dbnickname";
          }
}

Aber ich finde des ein bischen umständlich was ich da gemacht habe.
Kennt jemand eine einfachere Lösung?
 
Hi, ich würdes folgendermaßen machen:

PHP:
$y = 0; 
$count = count($id); 
while ($y < $count) 
{ 
$res = mysql_db_query("$database","SELECT * FROM $table_login WHERE Id = $id[$y]");
// Zeile der Abfrage ins Array $res2 speichern
$res2 = mysql_fetch_array($res);

// ID und Nickname mit den Spaltennamen ausgeben
echo "ID $res2[ID]";
echo "Nickname $res2[Nickname]";

// $y hochzählen
$y++;
}

Vorraussetzung ist jedoch, das ID nur EINMAL in der Datenbank vorkommt.
..und ich hoff mal, dass ich jetzt keinen Denkfehler drin hab.

sers
 
noch Systembelastender gehts kaum oder? ;D
PHP:
<?
$ids = array(1,3,5,7);

$subQry = "Id='".$ids[0]."' ";
for($i=1;$i<count($ids);$i++) {
	$subQry .= "OR Id='$ids[$i]' ";
}

$query = "SELECT Id, Nickname FROM $table_login WHERE $subQry"
$result = mysql_query($query); 
while($row = mysql_fetch_assoc($result)){
	echo "Id:".$row['Id']."<br>";
	echo "Nickname:".$row['Nickname']."<br><br>";
}
?>

und falls es in der aktuellen installierten mysql funktioniert darf man auch diese version nutzen

PHP:
<?
$ids = array(1,3,5,7);
$str = implode($ids,",");
$query = "SELECT Id, Nickname FROM $table_login WHERE Id IN($str)";
$result = mysql_query($query); 
while($row = mysql_fetch_assoc($result)){
	echo "Id:".$row['Id']."<br>";
	echo "Nickname:".$row['Nickname']."<br><br>";
}
?>
 
Zuletzt bearbeitet:
Versuchs mal so:

PHP:
for($y=0;$y<count($id);$y++)
{
$res = mysql_query("SELECT * FROM ".$table_login." WHERE Id='".$id[$y]."' LIMIT 1");
// Zeile der Abfrage ins Array $res2 speichern
$res2 = mysql_fetch_array($res);

// ID und Nickname mit den Spaltennamen ausgeben
echo "ID ".$res2[ID];
echo "Nickname ".$res2[Nickname];
}
 
sooo @Lars Michelsen

und nun lass dein Array ne grösse mit 10.000 einträgen haben dann machst ohne scherz 10.000 anfragen an die mysql o_O und wenn du pech hast wird dir dabei sogar dein php streiken mal von der cpu last abgesehen ...
ausserdem wieso ein select * wenn ihr eh nur Nickname und Id benötigt?

also manchmal frag ich mich wirklich obs nicht bessere wäre wenn die Rechner langsamer wären, damit ihr mal merkt was ihr da Programmiert o_O
 
Ok jetzt geht es.

@SonicBe@m

Danke für deinen Vorschlag funktioniert sehr gut.
 
Zurück