mysql_num_rows oder arry?
Chris
- php
Hallo,
ich arbeite gerade ein wenig mit mysql_num_rows rum und hätte jetzt dazu eine Frage: mysql_num_rows liefert ja die Anzahl aller Datensätze einer Ergebnismenge, kann ich sowas auch in einen Array schreiben?
Quasi ich will nciht immer so schreiben:
$result2 = mysql_query("SELECT * FROM Sonstiges ORDER BY Sonst_ID")or die(mysql_error());
$auswahl=mysql_num_rows($result2);
for ($i=0; $i<$auswahl; $i++)
{
if ($sonstigesname == mysql_result($result2,$i,0))
{
?>
<option value="<?echo mysql_result ($result2,$i,0)?>" selected><? echo mysql_result ($result2,$i,0)?></option>
usw...
sondern ich würde gerne wie bei mysql_fetch_array das ganze so etwa schreiben: <option value="<?echo $auswahl2[Nw_ID]?>" selected><? echo $auswahl2[Nw_IP]?></option>
Gibts da bei PHP einen Befehl dafür? Denn mysql_fetch_array liefert mir ja nur einen Datensatz zurück oder habe ich da was falsch verstanden?
sonnige Grüße
Chris
Halihallo Chris
sondern ich würde gerne wie bei mysql_fetch_array das ganze so etwa schreiben: <option value="<?echo $auswahl2[Nw_ID]?>" selected><? echo $auswahl2[Nw_IP]?></option>
Gibts da bei PHP einen Befehl dafür? Denn mysql_fetch_array liefert mir ja nur einen Datensatz zurück oder habe ich da was falsch verstanden?
Standardmässig:
mysql_query
while ( result = mysql_fetch_row ) {
do something with result
}
einfach über die Datensätze iterieren, wenn du sie linear auslesen möchtest (und das ist
meistens so). Falls du in den Datensätzen irgendwie "herumspringen" musst, tue es so wie
du vorgeschlagen hast. Aber das ganze RecordSet einlesen ist unfug und nicht zu
empfehlen.
Viele Grüsse
Philipp
Hi!
sondern ich würde gerne wie bei mysql_fetch_array das ganze so etwa schreiben: <option value="<?echo $auswahl2[Nw_ID]?>" selected><? echo $auswahl2[Nw_IP]?></option>
Wie soll das gehen? Wenn Du im Array mehrer Datensätze als den einen hast brauchst Du auch mehr Dimansionen im Array, also z.B. $auswahl2[1][Nw_IP]
Gibts da bei PHP einen Befehl dafür? Denn mysql_fetch_array liefert mir ja nur einen Datensatz zurück oder habe ich da was falsch verstanden?
Philipp hat es ja schon erklärt wie es normalerweise gemacht wird, aber es gibt noch einen anderen Ansatz, das PEAR::DB Modul:
http://pear.php.net/manual/de/core.db.tut_fetch.php
Die Methode get_all() dürfte interessant sein, sie liefert einfach:
<?php
$data = $db->getAll('SELECT id, text, date FROM mytable');
/*
Will return:
array(
1 => array('4', 'four', '2004'),
2 => array('5', 'five', '2005'),
3 => array('6', 'six', '2006')
)
*/
?>
Natürlich muss hierfür PEAR vorhanden sein und eingebunden werden. Mehr steht unter den Link oben. Leider gibts da nichts mit einem Assoazitiven Array, sonst würde ich das nur verwenden.
Grüße
Andreas