PHP アプリケーションで PDO と準備済みステートメントを使用しています。次のように、クエリのプレースホルダーに配列値をバインドしています。
// This method is called twice from somewhere in my app:
// setWhere ( 'col1', 50 );
// setWhere ( 'col2', 60 );
function setWhere ( $column, $value )
{
$this->bindings[$column] = $value;
}
次に、クエリを次のように実行します。
// This query is constructed by the same class (sort of an ORM wrapper)
// $sql = "SELECT * FROM table WHERE col1 = :col1 OR col2 = :col2";
$stmt = $this->db->prepare ( $sql );
$stmt->execute ( $this->bindings );
このようにうまく動作します。OR
しかし、同じ列で選択する必要がある場合はどうすればよいですか? 次に、基本的に、既に存在する配列にインデックスを設定します。
setWhere ( 'col1', 50 );
setWhere ( 'col1', 60 );
基本的にcol1
インデックスを2回設定します:
$this->bindings['col1'] = 50;
$this->bindings['col1'] = 60;
この場合、それは決して機能しません。
どうすればこの問題を回避できますか?