tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

Modifikátor %OR a různé parametry stejného sloupce

před 10 lety

neologyc
Člen | 13

Ahoj,

zkouším teď pomocí dibi a modifikátoru podobnou SQL query:

<?php
SELECT * FROM `table`
WHERE (
`region` = "L20900"
OR "L20901"
OR "L20902"
OR "L20903"
OR "L20904"
OR "L20905"
OR "L20906"
OR "L20907"
ORDER BY `date` LIMIT 0 , 30
?>

Rád bych použil modifikátor %or, ale nějak mi to s ním nejde (v poli nejde nazvat klíče stejně – tedy podle slopuce „region“).
Je nějak možné pomocí %OR imploadovat pole s různými parametry do tohoto SQL dotazu?

Teď mám nefunkční řešení:

<?php
    $this->paramArray['region'] = array("L21300","L21301","L21302","L21303","L21304");

    $query[] = 'SELECT * FROM [table]';

    array_push($query, 'WHERE ( [region] = %or ', $this->paramArray['region'], ')');

        $result = dibi::test($query);
?>

což produkuje špatný SQL dotaz:

<?php
SELECT *
FROM `table`
WHERE ( `region` = (L21300) OR (L21301) OR (L21302) OR (L21303) OR (L21304) )
?>

který má být:

<?php
SELECT *
FROM `table`
WHERE ( `region` = "L21300" OR "L21301" OR "L21302" OR "L21303" OR "L21304" )
?>

před 10 lety

Petr Motejlek
Člen | 293

No ale fuj… Neznáš IN ?

<?php
  SELECT * FROM [myTable] WHERE [myCol] IN (1, 12, 20)
?>

Pro tvoje použití něco jako

<?php
  $query = 'SELECT * FROM [myTable] WHER [myCol] IN (%s)';
  dibi::query($query, array(1, 12, 3));
?>

Editoval Petr Motejlek (11. 12. 2009 15:58)

před 10 lety

neologyc
Člen | 13

Děkuji, budu IN a použiju IN :-)

Nechápu, proč jsem si ztížil život :-)

Děkuju.

Petr Motejlek napsal(a):

No ale fuj… Neznáš IN ?

<?php
  SELECT * FROM [myTable] WHERE [myCol] IN (1, 12, 20)
?>

Pro tvoje použití něco jako

<?php
  $query = 'SELECT * FROM [myTable] WHER [myCol] IN (%s)';
  dibi::query($query, array(1, 12, 3));
?>