0

sqlite3 と "num_rows" に問題があります。mysql のような結果の num_rows を要求することはできません。行数を要求するために SELECT クエリを自動化したくありません。2 つのパターン間ですべてを置き換える方法はありますか?

お気に入り

    SELECT date,name,etc FROM myTable WHERE gender=1
// to
SELECT count(*) FROM myTable WHERE gender=1

SELECT と FROM の間をすべて count(*) に置き換える必要があります。この preg_replace を実行できますか?

4

1 に答える 1

2

あなたの例は単純ですが、すべてのクエリ構文で機能するとは限りません。しかし、試してみてください:

PHP コード (使用する言語がわからない):

$count_sql = preg_replace('/^(SELECT)\\s+.*?\\s+(FROM.*)$/s', '$1 count(*) $2', $select_sql);

しかし、それを見つけるためのもっとエレガントな方法があるとnum_rows思います。次のようなサブクエリを使用できます。

SELECT COUNT(*) FROM ( *** original query here *** )

あまり効率的ではありませんが、クエリ構文を扱う必要はありません。

于 2012-07-17T17:35:24.350 に答える