Autor | Zpráva | ||
---|---|---|---|
leonek Profil |
#1 · Zasláno: 24. 9. 2016, 16:52:37
Ahojte
Podle příspěvku z PHP manuálu jsem vytvořil kod níže, ale vzhledem k tomu, že výstup je typu "resource" a ne array tak to nefunguje. Jde mi o to, že potřebuji vědět, jestli se id vyskytuje mezi vyhledanými řádkami ještě před zpracováním. A také se snažím vyhnout dalšímu sql dotazu. $nacist = mysql_query("SELECT * FROM tabulka WHERE neco=1"); $idcook = array_search($this->id, array_column($nacist, 'id')); while ($n = mysql_fetch_array($nacist)){ if($idcook == FALSE)$this->id=$n['id']; ... } |
||
Alphard Profil |
#2 · Zasláno: 24. 9. 2016, 17:31:51
Takhle to nepůjde, kvůli tebou popsanému důvodu.
Je třeba projít ty výsledky 2x, tj. jeden cyklus, vrátit se na začátek pomocí mysql_data_seek() a pak samotné zpracování. Nebo použít pro přístup k db nějakou vrstvu, která vrátí přímo pole. mysql extenze je již stejně odepsaná... |
||
tpmar Profil |
#3 · Zasláno: 24. 9. 2016, 22:46:01
leonek:
Jestli jsem to špatně pochopil tak se potom omlouvám za příspěvek ale nestačil by SQL dotaz upravit následovně? "SELECT * FROM tabulka WHERE neco=1 AND id = " . $this->id A pak jen kontrolovat, jestli ti to vrací výsledek. |
||
leonek Profil |
#4 · Zasláno: 25. 9. 2016, 09:57:52
tpmar:
To právě nejde protože potřebuji všechna data do <select> a označit ten první pokud se IDéčko, které je uložené v $_COOKIE['doprava'] nevyskytuje mezi vrácenými řádkami.
Alphard: Nedalo by se tomu vyhnout třeba nějakým složeným výrazem (které mi vůbec nejdou): mysql_query("SELECT *, (SELECT id FROM tabulka WHERE neco=1) as idecka FROM tabulka WHERE neco=1") |
||
Alphard Profil |
#5 · Zasláno: 25. 9. 2016, 10:37:08
leonek [#4]:
V principu ano, ale já to cítím jako dost velký workaround. Komplikuje to dotaz, přehlednost, zanáší to nedůležité závislosti a tak... Vždyť projít 2x vrácenou sadu výsledků je triviální. Za minutu by to bylo napsané. |
||
leonek Profil |
#6 · Zasláno: 25. 9. 2016, 15:57:52
Alphard:
Triviální to je... Jde mi jen o to, že tento skript se spouští velmi často a chtěl bych aby byl co možná nejrychlejší. Otázkou tedy je: bude 2x while rychlejší než dva SELECTy když předpokládáný počet výsledků je do 10 (slovy deset :D)? |
||
Alphard Profil |
#7 · Zasláno: 25. 9. 2016, 18:06:47
Jeden cyklus navíc s cca deseti iteracemi vůbec nepůjde poznat.
|
||
Časová prodleva: 8 let
|
0