次のような SQL クエリ文字列があります。
SELECT * FROM `oc_product` WHERE `manufacturer_id` = ? AND `date_added` < ? `product_id` IN (?) AND `price` > ? ORDER BY `product_id` ASC;
これは、次のように Query クラスのコンストラクターに渡されます。
$query = new Query("SELECT * FROM `oc_product` WHERE `manufacturer_id` = ? AND `date_added` < ? `product_id` IN (?) AND `price` > ? ORDER BY `product_id` ASC;", 27, date("Y-m-d H:i:s"), [17,18,29,30,46,47], 27.75);
私は現在、疑問符を区切り文字として文字列を分解し、マークの数を数えてパラメーターをトラバースし、クエリ文字列を再構成する関数を持っているので、配列であるパラメーターごとに、その疑問符を次のように置き換えますパラメータとして多くの疑問符が配列内にあります (そのため、のようIN (?)
に修正されるのではなくIN (?,?,?,?,?,?)
)。
しかし、私は自分の関数がどのように見えるかが好きではなく、より良い等価物、または可能であれば正規表現/関数/SPL駆動の手順を見つけて、現在行っているよりもはるかに簡単に置換できるようにしたいと考えています.
ヒントを教えていただけますか?