2012-07-17 55 views
0

我遇到了sqlite3和「num_rows」的問題。我不能要求mysql的結果的num_rows,現在我不想自動化我的SELECT查詢來請求rowcount。 有沒有辦法在兩種模式之間取代所有模式?preg_replace用於更改sql查詢字符串

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

我必須更換所有SELECT之間,並從COUNT(*)。 我可以做這個preg_replace嗎?

回答

2

對於您的示例提供它很簡單,但我想它不適用於所有查詢語法。但有一試:

PHP代碼(不知道你使用的語言):

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

但我想,沒有找到num_rows事情更優雅的方式。您可以使用子查詢,如:

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

這不是很有效,但您不必處理查詢語法。

+0

非常感謝那種更優雅的方式!我不知道這種方法是否奏效,並且已經把頭髮從我的頭上拉了一會兒。 – ChrisR 2013-10-04 09:44:52