【FuelPHP】MySQLにIN句を仕込む方法と【メモ】

アイキャッチ IN句 プログラミング

どうも、なおや(@naoya2_2)です。

仕事上の開発で、SQLのIN句に配列を渡したかったのですが苦戦したのでメモしておきます。

【著者プロフィール】
高橋直也(@naoya2_2
フリーランスエンジニア。SEとして主に某企業顧客管理システムの開発、改修を担当している。ブログでは30歳未経験からSESを経てフリーランスになった経緯等を発信中。以前はブログの運営やライティングを教える講師としても活動。

実行したいSQL

SELECT COUNT(*) FROM user WHERE id IN (100, 200, 300) AND name = 'NAOYA';

このIN句に配列をそのまま渡しても、配列を文字列に変換して入れ込もうとしてもうまくいきませんでした。

結論、以下の方法で解決です。

【解決】FuelPHPでの記述

FuelPHP

$user_ids = array(100, 200, 300);
$name = 'NAOYA';

$sql = SELECT COUNT(*) FROM user WHERE id IN :user_ids AND name = :name;

$params = array('user_ids' => $user_ids);

$dbQuery = DB::query($sql);
$dbQuery->bind(':name', $name);
$dbQuery->parameters($params);

$result = $dbQuery->execute()->as_array();

これで想定通りの動きをしました。