tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

WHERE %or (int or array ?)

před 9 lety

tito100
Člen | 2

dobrý deň
potreboval by som poradiť. keď mam v metóde dibi::query kde mam značku %or , a predávam mu array, alebo integer.
ked to spravím týmto spôsobom, tak to nefunguje :

// id : int , array
  public static function changeDate($id ,$columm='showed_from')
  {
    $banner = dibi::query('UPDATE `banners` SET %sql ','['.$columm.']',' =  CURDATE()
     WHERE `id`=%or ', $id , ' LIMIT %i',(1),";");
    return ($banner);
  }

jedine sa mi to podarilo spraviť týmto spôsobom :

public static function changeDate($id ,$columm='showed_from')
{
  $banner = dibi::query('UPDATE `banners` SET %sql ','['.$columm.']',' =  CURDATE()
  %if ', (is_array($id) && count($id)),' WHERE %or ', (is_array($id)?$id:array()) , '%else WHERE `id`=%i',$id,'%end LIMIT %i',(is_array($id)?count($id):1),";");
  return ($banner);
}

čo sa mi však nezdá, že by niečo také ako dibi na toto nemyslelo. skôr je to prípad, že si to len ja neviem previesť do dibi syntaxe.
môžete mi prosím poradiť, ako to napísať lepšie ?
vopred ďakujem

Editoval tito100 (25. 4. 2010 13:49)

před 9 lety

phx
Člen | 652

Take by slo pouzit SQL operator IN. id IN (1, 2, 3)

před 9 lety

tito100
Člen | 2

to ano. ale to by nefungovalo v pripade že chcem porovnavat podla viacej stlpcou