プリペアドステートメントでWHERE INを使おうとしたが…

ToDo

<?php

$ids = array(1, 3, 7);

$sql = " SELECT ◯◯ …
  …
  …

  WHERE hoge IN (:mychuno_ids)
  …
  …

";

$mychuno_ids = implode(",", $ids); // → "1,3,7" という一つの文字列に!
$params = array('mychuno_ids' => $mychuno_ids);
$result    = $this->query($sql, $params);

↑これで上手くいくかと思ったが、プレースホルダが、文字列の先頭の数字(この場合は1)しか解釈してくれず失敗…
プレースホルダを使わずに、

<?php

$sql  = "SELECT * FROM ◯◯ … WHERE hoge IN (";
$sql .= $mychuno_ids; // ←1,3,7
$sql .= ") …";

…のように、IN句の対象部分をSQL文に組み込んで解決。

所感

CakePHPのfindメソッドだと、配列のまま、

<?php
'conditions' => array('mychuno_ids' => $array_mychuno_ids),

と書けるから楽。
(配列を渡すと自動的にWHERE INに変換してくれる)