Oznámení
Omlouváme se, provoz fóra byl ukončen
Modifikátor %OR a různé parametry stejného sloupce
Upozornění: Tohle vlákno je hodně staré.
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)); ?>