Autor Zpráva
Peet
Profil
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
Zdravim,
s databázema nemam moc zkušeností, ale možná by ti mohlo pomoct view (dokumentace).
juriad
Profil
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
Dobře děkuji mockrát za názory ;)
Alphard
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0