Oznámení
Chytřejší styl zápisu, mnoho opakování hodnot za zástupné modifikátory
před 7 lety
- Kcko
- Člen | 292
Zdravím pánové,
Dibi používám již delší dobu a jsem spokojen. Momentálně mě trápí jistá forma zápisu:
$a = 10;
$b = 10;
dibi::fetchAll("SELECT .. FROM ... WHERE parametr = %i AND parametr = %i AND parametr = %i AND parametr = %i, $a, $b, $a, $b);
Je to pouze modelová ukázka, používám složitější dotazy, podmínky, subdotazy atd a dosazuji např. pouze 2 unikátní hodnoty, ale musím je dosadit třeba 10×.
tj.
SELECT .... , $a, $b, $a, $b, $a, $b, $a, $b // neda se toto nějak ZREDUKOVAT, abych nemusel opakovat tolik stejných hodnot kolik je parametrů?
před 7 lety
- Milo
- Nette Core | 1119
Piš dotazy na víc řádků a proměnné hned za modifikátory
dibi::fetchAll('
SELECT
*
FROM
table
WHERE
parameter = %i', $a, '
AND
parameter = %i', $b, '
AND
parameter = %i', $a, '
');
před 7 lety
- Kcko
- Člen | 292
Milo: ano, o tom samozřejmě vím, ale není to to, co jsem čekal. Lépe to nejde? Pokud ne, tak se nic neděje, jen mě to zajímalo.
před 7 lety
- Milo
- Nette Core | 1119
Aha, já myslel že Tě trápí ten zápis všeho až na konec. Pak možná ještě:
$sql = array();
$sql[] = 'SELECT .. FROM ... WHERE parametr = %i AND parametr = %i AND parametr = %i AND parametr = %i';
for ($i = 0; $i < 4; $i++) {
$sql[] = $a;
$sql[] = $b;
}
dibi::fetchAll($sql);
Jinak mě nic nenapadá, o žádném „opakovači argumentů“ nevím.
před 7 lety
- Kcko
- Člen | 292
Nene, trápil mě „opakovač argumentů“, i o tomto způsobu vím. Přesto děkuji za pomoc a snahu.
před 7 lety
- LuKo
- Člen | 114
Jaký je SQL dotaz? Třeba by to šlo zoptimalizovat tam, abys nemusel argumenty opakovat.
Editoval LuKo (25. 6. 2012 13:02)
před 7 lety
- Kcko
- Člen | 292
Dotazy jsou často dlouhé a složité. Toto není problém SQL dotazů, ale problém opakování argumentů, které neumožňují chytřejší a pohodlnější zápis. Oba možné způsoby uvedl již dibi-kolega Milo, takže pokud to nejde nějak vylepšit, nemá smysl se bavit o přepisování dotazů ;-), díky.