Parašė ozzWANTED· 2010 Kov. 20 01:03:43
#8
visų pirma yra toks dalykas kaip dbarraynum(dbquery(...),ID);
todėl gali daryti taip:
$uzklausa = dbquery(...);
$dydis = dbrows($uzklausa);
for($i=0;$i<$dydis;$i++) {
// Į kešą dabar ką nori susikrauni;
list($settings[$i]['user_id'],$settings[$i]['user_name'] = dbarraynum($uzklausa,$i);
}
Orginalius, ne fusion funkcijų pavadinimus pasiimsi iš maincore.php, jeigu reikia.
$query = db_query("SELECT SQL_CACHE * FROM `main_settings`");
foreach ($query as $data) {
$settings[$data['settings_name']] = $data['settings_value'];
}
Toks dalykas iš esmės yra neteisingas, dbquery, tik sukelia į atmintį užklausos rezultatą, bet jos niekaip neparodo, nes negalima
mysql'o array'aus nuskaityti
php array funkcijomis.
dbarray, dbarraynum, paima pirmąją eilutę, tačiau tu gali užklausoje(LIMIT 5,1) arba dbarraynum($uzklausa,5); nurodyti kurią rezultato eilutę nori matyti.
Dar gali su having - "having sum(total_acts) > 15" pasirimti reikiamą rezultatą, jeigu where parametrais neįmanoma.
Tačiau bet kuriuo atveju tau reikia kokios nors array funkcijos.
while funkcija iš tikrųjų veikia tokiu pat pagrindu kaip:
dbarray($uzklausa);
dbarray($uzklausa);
Tiesiog važiuoja rodykle atmintyje po vieną eilutę žemyn.
Foreach galima taikyti, tik tuomet kaip JAU YRA
PHP seka, ir tu ją nori pergrupuoti.
----
Dar žinok, kad komanda SELECT SQL_CACHE sth FROM some_tbl
veiks tik jei:
my.cnf faile bus:
query_cache_type = 2
Dababase independent atveju:
SELECT /*! SQL_CACHE */ sth FROM some_tbl
Redagavo ozzWANTED· 2010 Kov. 20 01:03:12