どうやって確認していいのかわからず、専門家の知見を拝借させてください。

仕事でphalconを使い始めました。英語マニュアルと格闘しながらModel周りを作っているのですが、例えばこんなコードではbindがうまく動いてくれませんでした。

$criteria = self::query();
$criteria->betweenWhere('created', ":start:", ":end:");
$criteria->bind(array("start" => $start, "end" => $end));
$criteria->bindTypes(
    array("start"=>Column::TYPE_DATETIME,"end"=>Column::TYPE_DATETIME)
);
$row = $criteria->execute();

実行時のエラー

PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in

ですが、以下のコードであれば正常に動作します。

$criteria = self::query();
$criteria->where('created between :start: and :end:');
$criteria->bind(array("start" => $start, "end" => $end));
$row = $criteria->execute();

で、これも動きます

$criteria = self::query();
$criteria->betweenWhere('created', $start, $end);
$row = $criteria->execute();

これはつまり、betweenWhereはautobindしてくれているということでしょうか?
であればSQLインジェクション対策としてそれに頼りたいと思うのですが、
実際のところどうなんでしょうか?
ご教授くださいm(__)m