Autor | Zpráva | ||
---|---|---|---|
Peet Profil |
#1 · Zasláno: 13. 3. 2013, 00:30:10
Dobrý večer, chci se zeptat zda existuje něco jako 'Podmínka pro celé připojení' ?
například že bych nějak nastavil, že když použiju nějaký specifický $mysqli->query tak se k němu automaticky vždy přidá podmínka WHERE some=some;
jde o to že tato podmínka se mi vyskytuje často je to jedna zásádní podmínka, tudíž chci takovo u ochranu abych ji nikde nevynechal nebo abych ji nemusel pořád vypisovat. Předem díky všem |
||
preca1 Profil |
#2 · Zasláno: 13. 3. 2013, 08:48:09
|
||
juriad Profil |
#3 · Zasláno: 13. 3. 2013, 11:21:03
Neexistuje, leda že si napíšeš svoji vrstvu nad mysqli.
Například statickou funkci function querySome($mysqli, $sql) { $sql .= "some = some"; // jen příklad, samotné lepení nestačí return $mysqli->query($sql); } Ale může být velice těžké rozhodnout kam podmínku přidat, obecně nefunguje přidání na konec (kvůli group by, having, order by, limit). Dokonce nemusí fungovat přidání na konec existující části WHERE (ve where použiješ operátor OR). A dokonce nemusí fungovat ani vložení jen na jedno místo (použiješ několik podselectů, přijoinuješ si několik tabulkek a ještě několik dotazů UNIONem slepíš) Query nemusí být jen SELECT, ale může to být INSERT, UPDATE, DELETE a pár dalších, případně kombinace (INSERT INTO tabulka SELECT * FROM tabulka2) Automatické přidání podmínky ti může zjednodušit život v začátcích, ale později bys na něj jen nadával. Přinese to jen problémy. |
||
Peet Profil |
#4 · Zasláno: 13. 3. 2013, 13:18:40
Dobře děkuji mockrát za názory ;)
|
||
Alphard Profil |
#5 · Zasláno: 13. 3. 2013, 13:44:51
Lépe by to šlo s použitím nějaké chytřejší vrstvy, např. fluent rozhraní dibi, při postupném skládání dotazu. Pak není problém vytvořit metodu baseSelect(), dát tam základní joiny, where podmínky a dál na tom stavět.
|
||
Časová prodleva: 11 let
|
0