Oznámení
skladani dotazu? jak?
před 10 lety
- wdolek
- Člen | 331
vzhledem k tomu, ze mi TeXy proste nebere text, obsahujici odkaz do dokumentace a text, ktery obsahuje SQL, je muj dotaz na adrese: http://storage.wdolweb.cz/…otaz_001.txt
predem diky za jakoukoliv radu
(PS, mozna za nejakou dobu takovy dotaz vlozit pujde… ono to obcas jde, obcas ne – sam nevim proc. Davidovi sem to uz reportoval, ale odpoved zadna)
před 10 lety
- wdolek
- Člen | 331
tak sem si nakonec pohral s DibiFluent – jak jsem puvodne zamyslel… postnul bych vysledek meho konani, ale .) texy se to proste nelibi :(
před 10 lety
- PetrP
- Člen | 587
$w = array();
array_push($w, 'id = %i', 1);
array_push($w, 'name = %s', 'X', '+ %s', 'Y');
array_push($w, 'stamp = 1');
$o = array('name', 'stamp', 'id');
$s = array('SELECT * FROM table WHERE %and',$w ,'ORDER %by', $o);
$this->getDb()->test($s);
Jinak nechápu kde si tohle %s + %s
v dokumentaci vyčetl.
A s vkládáním odkazů ani zdrojáků nevidím problém.
Editoval PetrP (9. 8. 2009 1:44)
před 10 lety
- vlki
- Člen | 218
Tohle by taky nebylo zrovna košér… Modifikátor %and
nahází mezi všechny prvky předaného pole samé AND
y.
Vygeneruje tedy něco takového:
SELECT *
FROM table
WHERE id = %i AND 1 AND name = %s AND X AND + %s AND Y AND stamp = 1
ORDER `name`, `stamp`, `id`
Aby se modifikátory přidávané pomocí array_push
aplikovaly,
musí se použít modifikátor %ex
. A ještě tam chybí
klíčové slovo BY
u order-by klauzule. Úprava dotazu
s modifikátory %ex
a BY
:
$w = array();
array_push($w, array('%ex' => 'id = %i', 1));
array_push($w, array('%ex' => 'name = %s', 'X', '+ %s', 'Y'));
array_push($w, 'stamp = 1');
$o = array('name', 'stamp', 'id');
$s = array('SELECT * FROM table WHERE %and',$w ,'ORDER BY %by', $o);
$this->getDb()->test($s);
// SQL
SELECT *
FROM table
WHERE id = 1 AND name = 'X' + 'Y' AND stamp = 1
ORDER BY `name`, `stamp`, `id`
Ale osobně by mi teda zápis pomocí DibiFluent
přišel mnohem
přehlednější…
$this->getDb()->select('*')->from('table')
->where(array(
'id%i' => 1,
'name%ex' => array('= %s', 'X', '+ %s', 'Y'),
'stamp%i' => 1,
))
->orderBy(array('name', 'stamp', 'id'))
->test();
před 10 lety
- PetrP
- Člen | 587
vlki napsal(a):
Tohle by taky nebylo zrovna košér…
Jasně šlo mi jen o ukázku toho jak správně použít modifikátory, protože uplně v základu nechápal sintaxy.
před 10 lety
- wdolek
- Člen | 331
vlki, PetrP: diky – to jsem to z te dokumentace zas vubec nepochopil :) … a s vkladanim clanku – chyba na me masince. linuxi FF ma asi nejaky problem s kodovanim ci co X-(