Sziasztok.
Van eggy lekérdezés amit mysqli_fetch array-el kilistázok. De kicsivel később ezt a lekérdezést listázni kell. a query eredmény objektumát szeretném másolni, hogy az objektum többször kiíratható legyen. hogyan?
Köszönöm
- 2481 megtekintés
Hozzászólások
Berakod egy változóba már először?
Vagy nemértem a kérdést.
pch
--
http://www.buster.hu "A" számlázó
--
- A hozzászóláshoz be kell jelentkezni
$query="mysql querym....";
$eredmeny=$kapcsolat->query($query);
while($nah=mysqli_fetch_array($eredmeny)) {
//itt megcsinálom amit meg kell
}
//majd itt szeretném újra felhasználni az eredmenyt amit már nem lehet újra while al lefutatni,
pl:$erdmeny2=$eredmeny; meg nem engedte
- A hozzászóláshoz be kell jelentkezni
Vagy beteszed egy tömbbe ami memóriaigényes és (szerintem) igénytelen
$row=array();
while ($nah=mysqli_fetch_array($erredmeny))
{
$rows[]=$nah;
};
foreach ($rows as $row)
{
dosomething;
};
vagy ahogy én csinálnám:
while($nah=mysqli_fetch_array($eredmeny)) {
//itt megcsinálom amit meg kell
}
mysqli_data_seek ( $eredmeny , 0);
while($nah=mysqli_fetch_array($eredmeny)) {
//itt megint megcsinálom amit meg kell
}
De még mielőtt valaki beleköt nem programozóként dolgozom
- A hozzászóláshoz be kell jelentkezni
Amennyire en tudom 1 connectionnel mindig csak a legutolso result-ot lehet elerni, theat mysqli_data_seek csak addig fog mukodni, amig nem futtatsz masik query-t
--------
Vultr VPS: SSD + 768MB RAM, 5USD/hó (benchmark), 20USD kupon: SSDVPS
- A hozzászóláshoz be kell jelentkezni
Sajna így van. Ezért javasoltam, hogy tegye változóba.
Igaz nagyobb a memória igénye és lassabb is valamivel, de elérhető később.
pch
--
http://www.buster.hu "A" számlázó
--
- A hozzászóláshoz be kell jelentkezni
Szerintem nincs így.
$conn=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$eredmeny=mysqli_query($conn,"select * from wp_posts limit 10");
while ($nah=mysqli_fetch_array($eredmeny)) printf( $nah["ID"]."</br>");
printf("---------<br/>");
$eredmeny2=mysqli_query($conn,"select * from wp_comments limit 10");
while ($nah=mysqli_fetch_array($eredmeny2)) printf( $nah["comment_ID"]."</br>" );
printf("---------<br/>");
mysqli_data_seek($eredmeny,0);
while ($nah=mysqli_fetch_array($eredmeny)) printf($nah["ID"]."</br>");
A harmadik while is simán, hozza az első lekérdezés eredményét (ami teljesen logikus).
- A hozzászóláshoz be kell jelentkezni
#nemertemakerdest
A mysqli_query eredményét annyiszor használod fel, ahányszor akarod. A mysqli_data_seek() pedig arra a rekordra pozícionál, ahová akarod.
- A hozzászóláshoz be kell jelentkezni
jó akárhányszor fel lehet használni, de akkor ez miért nem megy?
$query="mysql querym....";
$eredmeny=$kapcsolat->query($query);
while($nah=mysqli_fetch_array($eredmeny)) {
//itt megcsinálom amit meg kell 1
}
while($nah2=mysqli_fetch_array($eredmeny)) {
//itt megcsinálom amit meg kell 2
}
- A hozzászóláshoz be kell jelentkezni
hol van benne a visszapozícionálás az elejére?
- A hozzászóláshoz be kell jelentkezni
most akkor ezt ugy kell elképzeni, hogy a fetch array elkezd lépkedni a sorokon, és közben emelgeti a sorok számát?
- A hozzászóláshoz be kell jelentkezni
Persze. Különben a ciklusban mindig ugyanazt a legelső rekordot kapnád, ha nem léptetné a pointert.
Idézem a manualt:
"Each subsequent call to this function will return the next row within the result set, or NULL if there are no more rows. "
- A hozzászóláshoz be kell jelentkezni
PDO-nál simám használhatnád a kapott tömböt annyiszor amennyiszer akarod.
- A hozzászóláshoz be kell jelentkezni