プリペアドステートメントでWHERE INを使おうとしたが…
例
<?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文に組み込んで解決。