joomla-logo1

在 Joomla 使用 SQL 字串的 IN()

一般說來要用 WHERE “IN()” 這個功能來選出指定的資料,都會寫這樣的程式碼來組 SQL 字串。
[cc lang=”php”]
//原資料如下
$filterCity = Array
(
[0] => 臺北市
[1] => 臺中市
[2] => 宜蘭縣
[3] => 花蓮縣
)

//用 implode 組成 IN 的 SQL 字串
$inCity = “‘” . implode(“‘, ‘”, $filterCity) . “‘”;
$sqlWhereCity = sprintf(“city_title IN(%s)”, $inCity);

[/cc]

在 Joomla 中可以這樣直接寫。

[cc lang=”php”]

//在這因為是字串,所以必需要借用 getDbo 的 quote 為陣列成為字串時加上單引號
$db = \JFactory::getDbo()
$filterCity = $db->quote($filterCity);

//如果要選的資料是純數字的 ID 其實只要這行即可
$sqlWhereCity = ‘`city_title`’ . new \JDatabaseQueryElement(‘IN()’, $filterCity);
[/cc]

另外,如果使用了 Windwalker 還可以這樣寫。

[cc lang=”php”]
//如果在 name space 下要在該檔最前面引入 Windwalker 的程式組
use Windwalker\Compare\InCompare;

$sqlWhereCity = (string) new InCompare(‘`city_title`’, $filterCity);
[/cc]

Related Posts Plugin for WordPress, Blogger...

Leave a Reply